Class: Net::HTTP::Post

Inherits:
Object
  • Object
show all
Defined in:
lib/contrib/multipart.rb

Instance Method Summary collapse

Instance Method Details

#set_multipart_form_data(params, boundary = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/contrib/multipart.rb', line 7

def set_multipart_form_data(params, boundary=nil)
  boundary ||= Digest::SHA1.hexdigest(params.inspect)
  chunks = params.map { |k,v|
    if(v.is_a?(File))
      %Q{Content-Disposition: form-data; name="#{k}"; filename="#{File.basename(v.path)}"\r\n} +
      %Q{Content-Transfer-Encoding: binary\r\nContent-Type: application/octet-stream\r\n\r\n} +
      %Q{#{v.read}\r\n}
    else 
      %Q{Content-Disposition: form-data; name="#{url_encode(k)}"\r\n} +
      %Q{\r\n#{v}\r\n} 
    end
  }
  self.body = "--#{boundary}\r\n" + chunks.join("--#{boundary}\r\n") + "--#{boundary}--\r\n"
  self.content_type = "multipart/form-data; boundary=#{boundary}"
end