class Uppy::S3Multipart::Client

Attributes

bucket[R]

Public Class Methods

new(bucket:) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 8
def initialize(bucket:)
  @bucket = bucket
end

Public Instance Methods

abort_multipart_upload(upload_id:, key:, **options) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 57
def abort_multipart_upload(upload_id:, key:, **options)
  multipart_upload = multipart_upload(upload_id, key)
  multipart_upload.abort(**options)

  {}
end
complete_multipart_upload(upload_id:, key:, parts:, **options) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 39
def complete_multipart_upload(upload_id:, key:, parts:, **options)
  multipart_upload = multipart_upload(upload_id, key)
  multipart_upload.complete(
    multipart_upload: { parts: parts },
    **options
  )

  { location: object_url(key: key) }
end
create_multipart_upload(key:, **options) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 12
def create_multipart_upload(key:, **options)
  multipart_upload = object(key).initiate_multipart_upload(**options)

  { upload_id: multipart_upload.id, key: multipart_upload.object_key }
end
list_parts(upload_id:, key:, **options) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 18
def list_parts(upload_id:, key:, **options)
  multipart_upload = multipart_upload(upload_id, key)
  multipart_parts  = multipart_upload.parts(**options).to_a

  multipart_parts.map do |part|
    { part_number: part.part_number, size: part.size, etag: part.etag }
  end
end
object_url(key:, public: nil, **options) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 49
def object_url(key:, public: nil, **options)
  if public
    object(key).public_url(**options)
  else
    object(key).presigned_url(:get, **options)
  end
end
prepare_upload_part(upload_id:, key:, part_number:, **options) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 27
def prepare_upload_part(upload_id:, key:, part_number:, **options)
  presigned_url = presigner.presigned_url "upload_part",
    bucket: bucket.name,
    key: object(key).key,
    upload_id: upload_id,
    part_number: part_number,
    body: "",
    **options

  { url: presigned_url }
end

Private Instance Methods

client() click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 78
def client
  bucket.client
end
multipart_upload(upload_id, key) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 66
def multipart_upload(upload_id, key)
  object(key).multipart_upload(upload_id)
end
object(key) click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 70
def object(key)
  bucket.object(key)
end
presigner() click to toggle source
# File lib/uppy/s3_multipart/client.rb, line 74
def presigner
  Aws::S3::Presigner.new(client: client)
end