HTTMultiParty is a thin wrapper around HTTParty to provide multipart uploads.
- httparty
- multipart-post
- mimemagic
To start just include HTTMultiParty
instead of include HTTParty
into
your client class. When you pass a query with an instance of a File as
a value for a PUT or POST request, the wrapper will use a bit of magic
and multipart-post to execute a multipart upload:
require 'httmultiparty'
class SomeClient
include HTTMultiParty
base_uri 'http://localhost:3000'
end
response = SomeClient.post('/', :query => {
:foo => 'bar',
:somefile => File.new('README.md')
})
Aside from that it provides all the usual HTTParty gimmicks.
If you want the library to detect the MIME types of the uploaded files, then
you need to enable it by supplying the :detect_mime_type
option as true
for POST or PUT requests. Otherwise, they will be uploaded with the default
MIME type of application/octet-stream
. For example:
require 'httmultiparty'
class SomeClient
include HTTMultiParty
base_uri 'http://localhost:3000'
end
response = SomeClient.post('/', :query => {
:foo => 'bar',
:somefile => File.new('README.md')
}, :detect_mime_type => true)
Instead of using File
class, you can use any class that responds to
a read
method as a file object. If you are using Rails, you can use
ActionDispatch::Http::UploadedFile
object directly as it responds to
read
method. The read
method should act similar to the IO#read
method. To set the filename your file class can optionally respond to
the original_filename
method, which should return a String
.