class HTTP::Message::Body::Parts
def add(part)
def add(part) if Message.file?(part) @as_stream = true @body << part if part.respond_to?(:stat) sz = part.stat.size add_size(part, sz) elsif part.respond_to?(:size) if sz = part.size add_size(part, sz) else @sizes.clear @size = nil end else # use chunked upload @sizes.clear @size = nil end elsif @body[-1].is_a?(String) @body[-1] += part.to_s @size += part.to_s.bytesize if @size else @body << part.to_s @size += part.to_s.bytesize if @size end end
def add_size(part, sz)
def add_size(part, sz) if @size @sizes[part] = sz @size += sz end end
def initialize
def initialize @body = [] @sizes = {} @size = 0 # total @as_stream = false end
def parts
def parts if @as_stream @body else [@body.join] end end