Class: BraintreeHttp::Multipart
- Inherits:
-
Object
- Object
- BraintreeHttp::Multipart
- Defined in:
- lib/braintreehttp/serializers/multipart.rb
Constant Summary collapse
- LINE_FEED =
"\r\n"
Instance Method Summary collapse
- #_add_file_part(key, file) ⇒ Object
- #_add_form_field(key, value) ⇒ Object
- #_mime_type_for_file_name(filename) ⇒ Object
- #content_type ⇒ Object
- #decode(body) ⇒ Object
- #encode(request) ⇒ Object
Instance Method Details
#_add_file_part(key, file) ⇒ Object
34 35 36 37 38 |
# File 'lib/braintreehttp/serializers/multipart.rb', line 34 def _add_file_part(key, file) mime_type = _mime_type_for_file_name(file.path) return "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{File.basename(file.path)}\"#{LINE_FEED}" + "Content-Type: #{mime_type}#{LINE_FEED}#{LINE_FEED}#{file.read}#{LINE_FEED}" end |
#_add_form_field(key, value) ⇒ Object
30 31 32 |
# File 'lib/braintreehttp/serializers/multipart.rb', line 30 def _add_form_field(key, value) return "Content-Disposition: form-data; name=\"#{key}\"#{LINE_FEED}#{LINE_FEED}#{value}#{LINE_FEED}" end |
#_mime_type_for_file_name(filename) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/braintreehttp/serializers/multipart.rb', line 40 def _mime_type_for_file_name(filename) file_extension = File.extname(filename).strip.downcase[1..-1] if file_extension == "jpeg" || file_extension == "jpg" return "image/jpeg" elsif file_extension == "png" return "image/png" elsif file_extension == "pdf" return "application/pdf" else return "application/octet-stream" end end |
#content_type ⇒ Object
26 27 28 |
# File 'lib/braintreehttp/serializers/multipart.rb', line 26 def content_type /multipart\/.*/ end |
#decode(body) ⇒ Object
22 23 24 |
# File 'lib/braintreehttp/serializers/multipart.rb', line 22 def decode(body) raise UnsupportedEncodingError.new("Multipart does not support deserialization") end |
#encode(request) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/braintreehttp/serializers/multipart.rb', line 6 def encode(request) boundary = DateTime.now.strftime("%Q") request.headers["Content-Type"] = "#{request.headers['Content-Type']}; boundary=#{boundary}" form_params = [] request.body.each do |k, v| if v.is_a? File form_params.push(_add_file_part(k, v)) else form_params.push(_add_form_field(k, v)) end end form_params.collect {|p| "--" + boundary + "#{LINE_FEED}" + p}.join("") + "--" + boundary + "--" end |