Class: Uppy::S3Multipart::Client
- Inherits:
-
Object
- Object
- Uppy::S3Multipart::Client
- Defined in:
- lib/uppy/s3_multipart/client.rb
Instance Attribute Summary collapse
-
#bucket ⇒ Object
readonly
Returns the value of attribute bucket.
Instance Method Summary collapse
- #abort_multipart_upload(upload_id:, key:, **options) ⇒ Object
- #complete_multipart_upload(upload_id:, key:, parts:, **options) ⇒ Object
- #create_multipart_upload(key:, **options) ⇒ Object
-
#initialize(bucket:) ⇒ Client
constructor
A new instance of Client.
- #list_parts(upload_id:, key:, **options) ⇒ Object
- #prepare_upload_part(upload_id:, key:, part_number:, **options) ⇒ Object
Constructor Details
#initialize(bucket:) ⇒ Client
Returns a new instance of Client.
8 9 10 |
# File 'lib/uppy/s3_multipart/client.rb', line 8 def initialize(bucket:) @bucket = bucket end |
Instance Attribute Details
#bucket ⇒ Object (readonly)
Returns the value of attribute bucket.
6 7 8 |
# File 'lib/uppy/s3_multipart/client.rb', line 6 def bucket @bucket end |
Instance Method Details
#abort_multipart_upload(upload_id:, key:, **options) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/uppy/s3_multipart/client.rb', line 49 def abort_multipart_upload(upload_id:, key:, **) multipart_upload = multipart_upload(upload_id, key) # aws-sdk-s3 docs recommend retrying the abort in case the multipart # upload still has parts loop do multipart_upload.abort(**) break unless multipart_upload.parts.any? end {} end |
#complete_multipart_upload(upload_id:, key:, parts:, **options) ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'lib/uppy/s3_multipart/client.rb', line 39 def complete_multipart_upload(upload_id:, key:, parts:, **) multipart_upload = multipart_upload(upload_id, key) multipart_upload.complete( multipart_upload: { parts: parts }, ** ) { location: object(key).presigned_url(:get) } end |
#create_multipart_upload(key:, **options) ⇒ Object
12 13 14 15 16 |
# File 'lib/uppy/s3_multipart/client.rb', line 12 def create_multipart_upload(key:, **) multipart_upload = object(key).initiate_multipart_upload(**) { upload_id: multipart_upload.id, key: multipart_upload.object_key } end |
#list_parts(upload_id:, key:, **options) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/uppy/s3_multipart/client.rb', line 18 def list_parts(upload_id:, key:, **) multipart_upload = multipart_upload(upload_id, key) multipart_parts = multipart_upload.parts(**).to_a multipart_parts.map do |part| { part_number: part.part_number, size: part.size, etag: part.etag } end end |
#prepare_upload_part(upload_id:, key:, part_number:, **options) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/uppy/s3_multipart/client.rb', line 27 def prepare_upload_part(upload_id:, key:, part_number:, **) presigned_url = presigner.presigned_url "upload_part", bucket: bucket.name, key: object(key).key, upload_id: upload_id, part_number: part_number, body: "", ** { url: presigned_url } end |