class DropboxApi::ChunkedUploader

Public Class Methods

new(client, path, i_stream, options = {}) click to toggle source
# File lib/dropbox_api/chunked_uploader.rb, line 6
def initialize(client, path, i_stream, options = {})
  @chunk_size = options.delete(:chunk_size) || 4 * 1024 * 1024 # 4 MiB

  @client = client
  @i_stream = i_stream

  init_commit_info(path, options)
end

Public Instance Methods

finish() click to toggle source
# File lib/dropbox_api/chunked_uploader.rb, line 32
def finish
  @client.upload_session_finish @cursor, @commit_info
end
start() click to toggle source
# File lib/dropbox_api/chunked_uploader.rb, line 15
def start
  chunk = @i_stream.read @chunk_size
  chunk = '' if chunk.nil?

  @cursor = @client.upload_session_start chunk
end
upload() click to toggle source
# File lib/dropbox_api/chunked_uploader.rb, line 22
def upload
  loop do
    chunk = @i_stream.read @chunk_size
    break if chunk.nil?

    @client.upload_session_append_v2 @cursor, chunk
    break if chunk.size < @chunk_size
  end
end

Private Instance Methods

init_commit_info(path, options) click to toggle source
# File lib/dropbox_api/chunked_uploader.rb, line 38
def init_commit_info(path, options)
  validate_options([
    :mode,
    :autorename,
    :client_modified,
    :mute
  ], options)

  options[:path] = path
  @commit_info = DropboxApi::Metadata::CommitInfo.build_from_options options
end