Ruby Uploader
This library provides a simple HTTP uploader based on chunks transfer. It supports handlers, useful to make custom request configuration and to read the progression of the file transfer.
Quickstart
First, install ruby-uploader
gem install ruby-uploader
ruby-uploader set the necessary headers and configure the request to enable chunk transfer.
Below, the most basic example do not require any configuration
require 'ruby-uploader/uploader'
uploader = Uploader::Upload.new(URI('https://server/path/to/upload'), 'myfile.bin')
uploader.execute
Optionally, headers can be set using a Hash parameter
uploader = Uploader::Upload.new(URI('https://server/path/to/upload'), 'myfile.bin', { 'custom-header' => 'value' })
uploader.execute
For more configuration capabilities, see the Handlers section
Handlers
ruby-uploader support handlers at four different steps of the upload request process
- Before the request is fired
- Before each chunk is sent
- After each chunk has been sent
- After the HTTP response is received
Set a handler is done usine the method add_handler on the Upload object. several handlers
can be add on the uploader, even several of the same type.
Add a :before handler
This handler is triggered before the request is fired. It give access to the request object
which is an instance of type Net::HTTPRequest from the net/http standard API.
class BeforeRequest
def execute(request)
...
end
end
uploader.add_handler :before, BeforeRequest.new
Add a :before_chunk handler
This handler is triggered for each chunk, before it is sent to the server. It give access to the following information :
chunk- the chunk of datacount- the number of the chunk (first chunk is0)total_count- total number of chunks to transfercontent_length- the value of the corresponding HTTP header
class BeforeChunk
def execute(chunk, count, total_count, content_length)
...
end
end
uploader.add_handler :before_chunk, BeforeChunk.new
Add a :after_chunk handler
This handler is triggered for each chunk, after it has been sent to the server. Its structure is
identical to the one of the before_chunk handler
class AfterChunk
def execute(chunk, count, total_count, content_length)
...
end
end
uploader.add_handler :after_chunk, AfterChunk.new
Add a :after handler
This handler is triggered after the response is received for the server. It give access to the
response object which is an instance of type Net::HTTPResponse from the net/http standard API.
class AfterRequest
def execute(response)
...
end
end
uploader.add_handler :after, AfterRequest.new