Class: Resourceful::MultipartFormData

Inherits:
Object
  • Object
show all
Defined in:
lib/resourceful/multipart_form_data.rb

Defined Under Namespace

Classes: FileParamValue

Instance Method Summary collapse

Constructor Details

#initializeMultipartFormData

Returns a new instance of MultipartFormData.



6
7
8
# File 'lib/resourceful/multipart_form_data.rb', line 6

def initialize()
  @form_data = []
end

Instance Method Details

#add(name, value) ⇒ Object



10
11
12
# File 'lib/resourceful/multipart_form_data.rb', line 10

def add(name, value)
  form_data << [name, value]
end

#add_file(name, file_name, content_type = "application/octet-stream") ⇒ Object



14
15
16
# File 'lib/resourceful/multipart_form_data.rb', line 14

def add_file(name, file_name, content_type="application/octet-stream")
  add(name, FileParamValue.new(File.new(file_name, 'r'), File.basename(file_name), content_type))
end

#content_typeObject



18
19
20
# File 'lib/resourceful/multipart_form_data.rb', line 18

def content_type
  "multipart/form-data; boundary=#{boundary}"
end

#readObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/resourceful/multipart_form_data.rb', line 22

def read
  StringIO.new.tap do |out|
    form_data.each do |key, val|
      out << "\r\n--" << boundary
      out << "\r\nContent-Disposition: form-data; name=\"#{key}\""
      if val.kind_of?(FileParamValue)
        out << "; filename=\"#{val.file_name}\""
        out << "\r\nContent-Type: #{val.content_type}"
      end
      out << "\r\n\r\n"
      if val.kind_of?(FileParamValue)
        out << val.content.read
      else
        out << val.to_s
      end
    end
    out << "\r\n--#{boundary}--"
  end.string
end