class TusClient::UploadRequest

Asks tus server to upload a chunk of a file, from a specific offset

Attributes

chunk_to_upload[R]
extra_headers[R]
file_size[R]
offset[R]
upload_uri[R]

Public Class Methods

new(upload_uri:, chunk_to_upload:, offset:, file_size:, extra_headers: {}) click to toggle source
# File lib/tusc/upload_request.rb, line 9
def initialize(upload_uri:, chunk_to_upload:, offset:, file_size:, extra_headers: {})
  upload_uri = upload_uri.is_a?(URI) ? upload_uri : URI.parse(upload_uri)
  unless upload_uri.is_a?(URI::HTTP) && !upload_uri.host.nil?
    raise URI::InvalidURIError, "Could NOT parse host from #{upload_uri.inspect}"
  end

  unless chunk_to_upload.is_a?(String)
    raise ArgumentError, "chunk_to_upload must be a String, found (#{chunk_to_upload}:#{chunk_to_upload.class.name})"
  end

  unless file_size.is_a?(Integer)
    raise ArgumentError, "file_size must be an Integer, found (#{file_size}:#{file_size.class.name})"
  end

  unless offset.is_a?(Integer)
    raise ArgumentError, "offset must be an Integer, found (#{offset}:#{offset.class.name})"
  end

  @chunk_to_upload = chunk_to_upload
  @extra_headers = extra_headers
  @file_size = file_size
  @offset = offset
  @upload_uri = upload_uri
end

Public Instance Methods

default_content_type() click to toggle source
# File lib/tusc/upload_request.rb, line 34
def default_content_type
  'application/offset+octet-stream'
end
headers() click to toggle source
# File lib/tusc/upload_request.rb, line 38
def headers
  {
    'Content-Type' => default_content_type,
    'Tus-Resumable' => supported_tus_resumable_version,
    'Upload-Offset' => offset.to_s
  }.merge(extra_headers)
end
logger() click to toggle source
# File lib/tusc/upload_request.rb, line 46
def logger
  @logger ||= TusClient.logger
end
perform() click to toggle source
# File lib/tusc/upload_request.rb, line 50
def perform
  response = TusClient::HttpService.patch(
    uri: upload_uri,
    headers: headers,
    body: chunk_to_upload,
    logger: logger
  )
  TusClient::UploadResponse.new(response, file_size)
end
supported_tus_resumable_version() click to toggle source
# File lib/tusc/upload_request.rb, line 60
def supported_tus_resumable_version
  '1.0.0'
end