Class: Uploadcare::Api::Upload::Files
- Inherits:
-
Object
- Object
- Uploadcare::Api::Upload::Files
- Defined in:
- lib/uploadcare/api/upload/files.rb
Overview
Upload API endpoint for file upload operations. rubocop:disable Metrics/ClassLength
Instance Attribute Summary collapse
-
#upload ⇒ Uploadcare::Api::Upload
readonly
Parent Upload client.
Instance Method Summary collapse
-
#direct(file:, request_options: {}, **options) ⇒ Uploadcare::Result
Upload a file directly (POST /base/).
-
#direct_many(files:, request_options: {}, **options) ⇒ Uploadcare::Result
Upload multiple files directly (POST /base/).
-
#from_url(source_url:, request_options: {}, **options) ⇒ Uploadcare::Result
Upload a file from URL (POST /from_url/).
-
#from_url_status(token:, request_options: {}) ⇒ Uploadcare::Result
Get upload-from-URL status (GET /from_url/status/).
-
#info(file_id:, request_options: {}) ⇒ Uploadcare::Result
Get file info from Upload API (GET /info/).
-
#initialize(upload:) ⇒ Files
constructor
A new instance of Files.
-
#multipart_complete(uuid:, request_options: {}) ⇒ Uploadcare::Result
Complete a multipart upload (POST /multipart/complete/).
-
#multipart_start(filename:, size:, content_type:, request_options: {}, **options) ⇒ Uploadcare::Result
Start a multipart upload (POST /multipart/start/).
Constructor Details
#initialize(upload:) ⇒ Files
Returns a new instance of Files.
10 11 12 |
# File 'lib/uploadcare/api/upload/files.rb', line 10 def initialize(upload:) @upload = upload end |
Instance Attribute Details
#upload ⇒ Uploadcare::Api::Upload (readonly)
Returns Parent Upload client.
7 8 9 |
# File 'lib/uploadcare/api/upload/files.rb', line 7 def upload @upload end |
Instance Method Details
#direct(file:, request_options: {}, **options) ⇒ Uploadcare::Result
Upload a file directly (POST /base/).
22 23 24 25 26 27 28 29 30 |
# File 'lib/uploadcare/api/upload/files.rb', line 22 def direct(file:, request_options: {}, **) Uploadcare::Result.capture do prepared_file = Uploadcare::Internal::UploadIo.wrap(file) params = build_upload_params(prepared_file, ) Uploadcare::Result.unwrap(upload.post(path: 'base/', params: params, request_options: )) ensure prepared_file&.close! end end |
#direct_many(files:, request_options: {}, **options) ⇒ Uploadcare::Result
Upload multiple files directly (POST /base/).
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/uploadcare/api/upload/files.rb', line 39 def direct_many(files:, request_options: {}, **) Uploadcare::Result.capture do raise ArgumentError, 'files must be an array' unless files.is_a?(Array) raise ArgumentError, 'files cannot be empty' if files.empty? prepared_files = [] params = Uploadcare::Internal::UploadParamsGenerator.call( options: , config: upload.config ) files.each do |file| prepared_file = Uploadcare::Internal::UploadIo.wrap(file) prepared_files << prepared_file form_data_for(prepared_file, params, field_index: prepared_files.length - 1) end Uploadcare::Result.unwrap(upload.post(path: '/base/', params: params, request_options: )) ensure prepared_files&.each(&:close!) end end |
#from_url(source_url:, request_options: {}, **options) ⇒ Uploadcare::Result
Upload a file from URL (POST /from_url/).
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/uploadcare/api/upload/files.rb', line 71 def from_url(source_url:, request_options: {}, **) Uploadcare::Result.capture do validate_url(source_url) async_mode = .fetch(:async, false) params = build_from_url_params(source_url, ) response = Uploadcare::Result.unwrap( upload.post(path: 'from_url/', params: params, request_options: ) ) if async_mode response else poll_upload_status(token: response['token'], options: , request_options: ) end end end |
#from_url_status(token:, request_options: {}) ⇒ Uploadcare::Result
Get upload-from-URL status (GET /from_url/status/).
93 94 95 96 97 98 99 100 101 |
# File 'lib/uploadcare/api/upload/files.rb', line 93 def from_url_status(token:, request_options: {}) Uploadcare::Result.capture do raise ArgumentError, 'token cannot be empty' if token.to_s.strip.empty? Uploadcare::Result.unwrap( upload.get(path: 'from_url/status/', params: { token: token }, request_options: ) ) end end |
#info(file_id:, request_options: {}) ⇒ Uploadcare::Result
Get file info from Upload API (GET /info/).
151 152 153 154 155 156 157 158 159 160 |
# File 'lib/uploadcare/api/upload/files.rb', line 151 def info(file_id:, request_options: {}) Uploadcare::Result.capture do raise ArgumentError, 'file_id cannot be empty' if file_id.to_s.strip.empty? Uploadcare::Result.unwrap( upload.get(path: 'info/', params: { pub_key: upload.config.public_key, file_id: file_id }, request_options: ) ) end end |
#multipart_complete(uuid:, request_options: {}) ⇒ Uploadcare::Result
Complete a multipart upload (POST /multipart/complete/).
131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/uploadcare/api/upload/files.rb', line 131 def multipart_complete(uuid:, request_options: {}) Uploadcare::Result.capture do raise ArgumentError, 'uuid cannot be empty' if uuid.to_s.strip.empty? params = { 'UPLOADCARE_PUB_KEY' => upload.config.public_key, 'uuid' => uuid } Uploadcare::Result.unwrap( upload.post(path: 'multipart/complete/', params: params, request_options: ) ) end end |
#multipart_start(filename:, size:, content_type:, request_options: {}, **options) ⇒ Uploadcare::Result
Start a multipart upload (POST /multipart/start/).
112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/uploadcare/api/upload/files.rb', line 112 def multipart_start(filename:, size:, content_type:, request_options: {}, **) Uploadcare::Result.capture do raise ArgumentError, 'filename cannot be empty' if filename.to_s.strip.empty? raise ArgumentError, 'size must be a positive integer' unless size.is_a?(Integer) && size.positive? raise ArgumentError, 'content_type cannot be empty' if content_type.to_s.strip.empty? params = build_multipart_start_params(filename, size, content_type, ) Uploadcare::Result.unwrap( upload.post(path: 'multipart/start/', params: params, request_options: ) ) end end |