Method: RestClient::Payload::Multipart#build_stream

Defined in:
lib/rest-client-1.4.2/lib/restclient/payload.rb

#build_stream(params) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/rest-client-1.4.2/lib/restclient/payload.rb', line 115

def build_stream(params)
  b = "--#{boundary}"

  @stream = Tempfile.new("RESTClient.Stream.#{rand(1000)}")
  @stream.write(b + EOL)

  if params.is_a? Hash
    x = flatten_params(params)
  else
    x = params
  end

  last_index = x.length - 1
  x.each_with_index do |a, index|
    k, v = *a
    if v.respond_to?(:read) && v.respond_to?(:path)
      create_file_field(@stream, k, v)
    else
      create_regular_field(@stream, k, v)
    end
    @stream.write(EOL + b)
    @stream.write(EOL) unless last_index == index
  end
  @stream.write('--')
  @stream.write(EOL)
  @stream.seek(0)
end