class HTTP::Message::Body::Parts

Attributes

size[R]

Public Class Methods

new() click to toggle source
# File lib/httpclient/http.rb, line 594
def initialize
  @body = []
  @size = 0
  @as_stream = false
end

Public Instance Methods

add(part) click to toggle source
# File lib/httpclient/http.rb, line 600
def add(part)
  if Message.file?(part)
    @as_stream = true
    @body << part
    if part.respond_to?(:lstat)
      @size += part.lstat.size
    elsif part.respond_to?(:size)
      if sz = part.size
        @size += sz
      else
        @size = nil
      end
    else
      # use chunked upload
      @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
parts() click to toggle source
# File lib/httpclient/http.rb, line 625
def parts
  if @as_stream
    @body
  else
    [@body.join]
  end
end