Class: HTTP::Client::Multipart
- Inherits:
-
Object
- Object
- HTTP::Client::Multipart
- Defined in:
- lib/http/client.rb
Overview
Response
Constant Summary collapse
- EOL =
"\r\n"- DEFAULT_MIME_TYPE =
'application/octet-stream'
Instance Attribute Summary collapse
-
#boundary ⇒ Object
readonly
Returns the value of attribute boundary.
Instance Method Summary collapse
- #body ⇒ Object
- #content_type ⇒ Object
-
#initialize(files, query = {}) ⇒ Multipart
constructor
A new instance of Multipart.
Constructor Details
#initialize(files, query = {}) ⇒ Multipart
Returns a new instance of Multipart.
307 308 309 310 311 |
# File 'lib/http/client.rb', line 307 def initialize files, query = {} @files = files @query = query @boundary = generate_boundary end |
Instance Attribute Details
#boundary ⇒ Object (readonly)
Returns the value of attribute boundary.
302 303 304 |
# File 'lib/http/client.rb', line 302 def boundary @boundary end |
Instance Method Details
#body ⇒ Object
317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 |
# File 'lib/http/client.rb', line 317 def body body = ''.encode('ASCII-8BIT') separator = "--#{boundary}" @query.each do |key, value| body << separator << EOL body << %Q{Content-Disposition: form-data; name="#{key}"} << EOL body << EOL body << value body << EOL end @files.each do |name, handle| if handle.respond_to?(:read) path = handle.path data = io.read else path = handle data = IO.read(path) end filename = File.basename(path) mime = mime_type(filename) body << separator << EOL body << %Q{Content-Disposition: form-data; name="#{name}"; filename="#{filename}"} << EOL body << %Q{Content-Type: #{mime}} << EOL body << %Q{Content-Transfer-Encoding: binary} << EOL body << %Q{Content-Length: #{data.bytesize}} << EOL body << EOL body << data body << EOL end body << separator << "--" << EOL body end |
#content_type ⇒ Object
313 314 315 |
# File 'lib/http/client.rb', line 313 def content_type "multipart/form-data; boundary=#{boundary}" end |