uploadcare-ruby 3.3.2 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +2 -1
- data/.gitignore +2 -0
- data/CHANGELOG.md +30 -0
- data/README.md +198 -36
- data/lib/uploadcare/client/addons_client.rb +56 -0
- data/lib/uploadcare/client/conversion/base_conversion_client.rb +1 -1
- data/lib/uploadcare/client/conversion/document_conversion_client.rb +1 -1
- data/lib/uploadcare/client/conversion/video_conversion_client.rb +1 -1
- data/lib/uploadcare/client/file_client.rb +14 -10
- data/lib/uploadcare/client/file_list_client.rb +4 -4
- data/lib/uploadcare/client/file_metadata_client.rb +36 -0
- data/lib/uploadcare/client/group_client.rb +4 -4
- data/lib/uploadcare/client/multipart_upload/chunks_client.rb +1 -0
- data/lib/uploadcare/client/multipart_upload_client.rb +7 -6
- data/lib/uploadcare/client/project_client.rb +1 -1
- data/lib/uploadcare/client/rest_client.rb +6 -5
- data/lib/uploadcare/client/rest_group_client.rb +24 -4
- data/lib/uploadcare/client/upload_client.rb +4 -1
- data/lib/uploadcare/client/uploader_client.rb +11 -10
- data/lib/uploadcare/client/webhook_client.rb +3 -3
- data/lib/uploadcare/entity/addons.rb +14 -0
- data/lib/uploadcare/entity/conversion/base_converter.rb +1 -1
- data/lib/uploadcare/entity/file.rb +19 -37
- data/lib/uploadcare/entity/file_list.rb +1 -0
- data/lib/uploadcare/entity/file_metadata.rb +30 -0
- data/lib/uploadcare/entity/group.rb +11 -2
- data/lib/uploadcare/entity/uploader.rb +13 -13
- data/lib/uploadcare/param/authentication_header.rb +2 -2
- data/lib/uploadcare/param/secure_auth_header.rb +1 -1
- data/lib/uploadcare/param/upload/upload_params_generator.rb +25 -8
- data/lib/uploadcare/ruby/version.rb +1 -1
- data/lib/uploadcare.rb +1 -0
- data/uploadcare-ruby.gemspec +10 -3
- metadata +27 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed47599fddd9c9b01dc434fffcffc0a323231396105fb028c6c6234ff0faaa6a
|
4
|
+
data.tar.gz: a9c20611bc482f6ee7454616dfdc54995d00a31f5159e943b60af71de4982792
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dba20c7fc6fea99e6b487e77dcec4477ec613f925d1dc2e4a1fd33caa6e8ba8844db2e7c579ac7e40427d24c4c88a4742967086face3c1a9d638815ed3d5c3e4
|
7
|
+
data.tar.gz: a4303e9e5b7584b3e5db4f346aff6e1a4bb44be843a762a95edaceec1b04a0400f2ceeb9945b0cfecd03a9ebceb855cc2b126b89f789987d40088f3ecf00eae3
|
data/.github/workflows/ruby.yml
CHANGED
@@ -12,7 +12,7 @@ on: [push, pull_request]
|
|
12
12
|
jobs:
|
13
13
|
test:
|
14
14
|
|
15
|
-
runs-on: ubuntu-
|
15
|
+
runs-on: ubuntu-20.04
|
16
16
|
strategy:
|
17
17
|
matrix:
|
18
18
|
ruby-version: [
|
@@ -25,6 +25,7 @@ jobs:
|
|
25
25
|
- name: Set up Ruby
|
26
26
|
uses: ruby/setup-ruby@v1
|
27
27
|
with:
|
28
|
+
bundler: 1.17.3
|
28
29
|
ruby-version: ${{ matrix.ruby-version }}
|
29
30
|
bundler-cache: true
|
30
31
|
- name: Run tests
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,35 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 4.0.0
|
4
|
+
|
5
|
+
### Breaking Сhanges
|
6
|
+
|
7
|
+
- For `Uploadcare::File#info`
|
8
|
+
- File information doesn't return `image_info` and `video_info` fields anymore
|
9
|
+
- Removed `rekognition_info` in favor of `appdata`
|
10
|
+
- Parameter `add_fields` was renamed to `include`
|
11
|
+
- For `Uploadcare::FileList#file_list`
|
12
|
+
- Removed the option of sorting the file list by file size
|
13
|
+
- For `Uploadcare::Group#store`
|
14
|
+
- Changed response format
|
15
|
+
- For `Uploadcare::File`
|
16
|
+
- Removed method `copy` in favor of `local_copy` and `remote_copy` methods
|
17
|
+
|
18
|
+
### Changed
|
19
|
+
|
20
|
+
- For `Uploadcare::File#info`
|
21
|
+
- Field `content_info` that includes mime-type, image (dimensions, format, etc), video information (duration, format, bitrate, etc), audio information, etc
|
22
|
+
- Field `metadata` that includes arbitrary metadata associated with a file
|
23
|
+
- Field `appdata` that includes dictionary of application names and data associated with these applications
|
24
|
+
|
25
|
+
### Added
|
26
|
+
|
27
|
+
- Add Uploadcare API interface:
|
28
|
+
- `Uploadcare::FileMetadata`
|
29
|
+
- `Uploadcare::Addons`
|
30
|
+
- Added an option to delete a Group
|
31
|
+
- For `Uploadcare::File` add `local_copy` and `remote_copy` methods
|
32
|
+
|
3
33
|
## 3.3.2 - 2022-07-18
|
4
34
|
|
5
35
|
- Fixes dry-configurable deprecation warnings
|
data/README.md
CHANGED
@@ -25,9 +25,11 @@ wrapping Upload and REST APIs.
|
|
25
25
|
* [File](#file)
|
26
26
|
* [FileList](#filelist)
|
27
27
|
* [Pagination](#pagination)
|
28
|
+
* [Custom File Metadata](#custom-file-metadata)
|
28
29
|
* [Group](#group)
|
29
30
|
* [GroupList](#grouplist)
|
30
31
|
* [Webhook](#webhook)
|
32
|
+
* [Add-Ons](#add-ons)
|
31
33
|
* [Project](#project)
|
32
34
|
* [Conversion](#conversion)
|
33
35
|
* [Useful links](#useful-links)
|
@@ -52,13 +54,24 @@ And then execute:
|
|
52
54
|
|
53
55
|
$ bundle
|
54
56
|
|
57
|
+
If you have Ruby version >= 3, then you probably will get error:
|
58
|
+
```
|
59
|
+
ArgumentError: wrong number of arguments (given 2, expected 1)
|
60
|
+
```
|
61
|
+
|
62
|
+
To fix this errors, add this line to your application's Gemfile:
|
63
|
+
```ruby
|
64
|
+
gem 'dry-configurable', '0.13.0'
|
65
|
+
```
|
66
|
+
and run `bundle install`
|
67
|
+
|
55
68
|
If already not, create your project in [Uploadcare dashboard](https://app.uploadcare.com/?utm_source=github&utm_medium=referral&utm_campaign=uploadcare-ruby) and copy
|
56
|
-
its API keys from there.
|
69
|
+
its [API keys](https://app.uploadcare.com/projects/-/api-keys/) from there.
|
57
70
|
|
58
71
|
Set your Uploadcare keys in config file or through environment variables:
|
59
72
|
```bash
|
60
|
-
export UPLOADCARE_PUBLIC_KEY=
|
61
|
-
export UPLOADCARE_SECRET_KEY=
|
73
|
+
export UPLOADCARE_PUBLIC_KEY=your_public_key
|
74
|
+
export UPLOADCARE_SECRET_KEY=your_private_key
|
62
75
|
```
|
63
76
|
|
64
77
|
Or configure your app yourself if you are using different way of storing keys.
|
@@ -67,8 +80,8 @@ settings can be seen in [`lib/uploadcare.rb`](lib/uploadcare.rb)
|
|
67
80
|
|
68
81
|
```ruby
|
69
82
|
# your_config_initializer_file.rb
|
70
|
-
Uploadcare.config.public_key = "
|
71
|
-
Uploadcare.config.secret_key = "
|
83
|
+
Uploadcare.config.public_key = "your_public_key"
|
84
|
+
Uploadcare.config.secret_key = "your_private_key"
|
72
85
|
```
|
73
86
|
|
74
87
|
## Usage
|
@@ -143,7 +156,7 @@ After the request for uploading-from-URL is sent, you can check the progress of
|
|
143
156
|
|
144
157
|
```ruby
|
145
158
|
Uploadcare::Uploader.get_upload_from_url_status("1251ee66-3631-4416-a2fb-96ba59f5a515")
|
146
|
-
# => Success({:size=>
|
159
|
+
# => Success({:size=>453543, :total=>453543, :done=>453543, :uuid=>"5c51a7fe-e45d-42a2-ba5e-79957ff4bdab", :file_id=>"5c51a7fe-e45d-42a2-ba5e-79957ff4bdab", :original_filename=>"2250", :is_image=>true, :is_stored=>false, :image_info=>{:dpi=>[96, 96], :width=>2250, :format=>"JPEG", :height=>2250, :sequence=>false, :color_mode=>"RGB", :orientation=>nil, :geo_location=>nil, :datetime_original=>nil}, :video_info=>nil, :content_info=>{:mime=>{:mime=>"image/jpeg", :type=>"image", :subtype=>"jpeg"}, :image=>{:dpi=>[96, 96], :width=>2250, :format=>"JPEG", :height=>2250, :sequence=>false, :color_mode=>"RGB", :orientation=>nil, :geo_location=>nil, :datetime_original=>nil}}, :is_ready=>true, :filename=>"2250", :mime_type=>"image/jpeg", :metadata=>{}, :status=>"success"})
|
147
160
|
```
|
148
161
|
|
149
162
|
In case of the `async` option is disabled, uploadcare-ruby tries to request the upload status several times (depending on the `max_request_tries` config param) and then returns uploaded file attributes.
|
@@ -188,6 +201,13 @@ You can override global [`:autostore`](#initialization) option for each upload r
|
|
188
201
|
@api.upload_from_url(url, store: :auto)
|
189
202
|
```
|
190
203
|
|
204
|
+
You can upload file with custom metadata, for example `subsystem` and `pet`:
|
205
|
+
|
206
|
+
```ruby
|
207
|
+
@api.upload(files, metadata: { subsystem: 'my_subsystem', pet: 'cat' } )
|
208
|
+
@api.upload_from_url(url, metadata: { subsystem: 'my_subsystem', pet: 'cat' })
|
209
|
+
```
|
210
|
+
|
191
211
|
### File management
|
192
212
|
|
193
213
|
Entities are representations of objects in Uploadcare cloud.
|
@@ -198,31 +218,107 @@ File entity contains its metadata.
|
|
198
218
|
|
199
219
|
```ruby
|
200
220
|
@file = Uploadcare::File.file("FILE_ID_IN_YOUR_PROJECT")
|
201
|
-
{
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
221
|
+
{
|
222
|
+
"datetime_removed"=>nil,
|
223
|
+
"datetime_stored"=>"2018-11-26T12:49:10.477888Z",
|
224
|
+
"datetime_uploaded"=>"2018-11-26T12:49:09.945335Z",
|
225
|
+
"is_image"=>true,
|
226
|
+
"is_ready"=>true,
|
227
|
+
"mime_type"=>"image/jpeg",
|
228
|
+
"original_file_url"=>"https://ucarecdn.com/FILE_ID_IN_YOUR_PROJECT/pineapple.jpg",
|
229
|
+
"original_filename"=>"pineapple.jpg",
|
230
|
+
"size"=>642,
|
231
|
+
"url"=>"https://api.uploadcare.com/files/FILE_ID_IN_YOUR_PROJECT/",
|
232
|
+
"uuid"=>"FILE_ID_IN_YOUR_PROJECT",
|
233
|
+
"variations"=>nil,
|
234
|
+
"content_info"=>{
|
235
|
+
"mime"=>{
|
236
|
+
"mime"=>"image/jpeg",
|
237
|
+
"type"=>"image",
|
238
|
+
"subtype"=>"jpeg"
|
239
|
+
},
|
240
|
+
"image"=>{
|
241
|
+
"format"=>"JPEG",
|
242
|
+
"width"=>500,
|
243
|
+
"height"=>500,
|
244
|
+
"sequence"=>false,
|
245
|
+
"orientation"=>6,
|
246
|
+
"geo_location"=>{
|
247
|
+
"latitude"=>55.62013611111111,
|
248
|
+
"longitude"=>37.66299166666666
|
249
|
+
},
|
250
|
+
"datetime_original"=>"2018-08-20T08:59:50",
|
251
|
+
"dpi"=>[72, 72]
|
252
|
+
}
|
253
|
+
},
|
254
|
+
"metadata"=>{
|
255
|
+
"subsystem"=>"uploader",
|
256
|
+
"pet"=>"cat"
|
257
|
+
},
|
258
|
+
"appdata"=>{
|
259
|
+
"uc_clamav_virus_scan"=>{
|
260
|
+
"data"=>{
|
261
|
+
"infected"=>true,
|
262
|
+
"infected_with"=>"Win.Test.EICAR_HDB-1"
|
263
|
+
},
|
264
|
+
"version"=>"0.104.2",
|
265
|
+
"datetime_created"=>"2021-09-21T11:24:33.159663Z",
|
266
|
+
"datetime_updated"=>"2021-09-21T11:24:33.159663Z"
|
267
|
+
},
|
268
|
+
"remove_bg"=>{
|
269
|
+
"data"=>{
|
270
|
+
"foreground_type"=>"person"
|
271
|
+
},
|
272
|
+
"version"=>"1.0",
|
273
|
+
"datetime_created"=>"2021-07-25T12:24:33.159663Z",
|
274
|
+
"datetime_updated"=>"2021-07-25T12:24:33.159663Z"
|
275
|
+
},
|
276
|
+
"aws_rekognition_detect_labels"=>{
|
277
|
+
"data"=>{
|
278
|
+
"LabelModelVersion"=>"2.0",
|
279
|
+
"Labels"=>[
|
280
|
+
{
|
281
|
+
"Confidence"=>93.41645812988281,
|
282
|
+
"Instances"=>[],
|
283
|
+
"Name"=>"Home Decor",
|
284
|
+
"Parents"=>[]
|
285
|
+
},
|
286
|
+
{
|
287
|
+
"Confidence"=>70.75951385498047,
|
288
|
+
"Instances"=>[],
|
289
|
+
"Name"=>"Linen",
|
290
|
+
"Parents"=>[{ "Name"=>"Home Decor" }]
|
291
|
+
},
|
292
|
+
{
|
293
|
+
"Confidence"=>64.7123794555664,
|
294
|
+
"Instances"=>[],
|
295
|
+
"Name"=>"Sunlight",
|
296
|
+
"Parents"=>[]
|
297
|
+
},
|
298
|
+
{
|
299
|
+
"Confidence"=>56.264793395996094,
|
300
|
+
"Instances"=>[],
|
301
|
+
"Name"=>"Flare",
|
302
|
+
"Parents"=>[{ "Name"=>"Light" }]
|
303
|
+
},
|
304
|
+
{
|
305
|
+
"Confidence"=>50.47153854370117,
|
306
|
+
"Instances"=>[],
|
307
|
+
"Name"=>"Tree",
|
308
|
+
"Parents"=>[{ "Name"=>"Plant" }]
|
309
|
+
}
|
310
|
+
]
|
311
|
+
},
|
312
|
+
"version"=>"2016-06-27",
|
313
|
+
"datetime_created"=>"2021-09-21T11:25:31.259763Z",
|
314
|
+
"datetime_updated"=>"2021-09-21T11:27:33.359763Z"
|
315
|
+
}
|
316
|
+
}
|
317
|
+
}
|
318
|
+
|
319
|
+
@file.local_copy # copy file to local storage
|
320
|
+
|
321
|
+
@file.remote_copy # copy file to remote storage
|
226
322
|
|
227
323
|
@file.store # stores file, returns updated metadata
|
228
324
|
|
@@ -300,8 +396,8 @@ how they should be fetched:
|
|
300
396
|
- **:limit** — Controls page size. Accepts values from 1 to 1000, defaults to 100.
|
301
397
|
- **:stored** — Can be either `true` or `false`. When true, file list will contain only stored files. When false — only not stored.
|
302
398
|
- **:removed** — Can be either `true` or `false`. When true, file list will contain only removed files. When false — all except removed. Defaults to false.
|
303
|
-
- **:ordering** — Controls the order of returned files. Available values: `
|
304
|
-
- **:from** — Specifies the starting point for a collection. Resulting collection will contain files from the given value and to the end in a direction set by an **ordering** option. When files are ordered by `datetime_updated` in any direction, accepts either a `DateTime` object or an ISO 8601 string. When files are ordered by size, accepts non-negative integers (size in bytes). More info can be found [here](https://uploadcare.com/api-refs/rest-api/v0.
|
399
|
+
- **:ordering** — Controls the order of returned files. Available values: `datetime_uploaded`, `-datetime_uploaded`. Defaults to `datetime_uploaded`. More info can be found [here](https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/filesList).
|
400
|
+
- **:from** — Specifies the starting point for a collection. Resulting collection will contain files from the given value and to the end in a direction set by an **ordering** option. When files are ordered by `datetime_updated` in any direction, accepts either a `DateTime` object or an ISO 8601 string. When files are ordered by size, accepts non-negative integers (size in bytes). More info can be found [here](https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/filesList).
|
305
401
|
|
306
402
|
Options used to create a file list can be accessed through `#options` method.
|
307
403
|
Note that, once set, they don't affect file fetching process anymore and are
|
@@ -340,6 +436,25 @@ Alternatively, it's possible to iterate through full list of groups or files wit
|
|
340
436
|
end
|
341
437
|
```
|
342
438
|
|
439
|
+
#### Custom File Metadata
|
440
|
+
|
441
|
+
File metadata is additional, arbitrary data, associated with uploaded file.
|
442
|
+
As an example, you could store unique file identifier from your system.
|
443
|
+
|
444
|
+
```ruby
|
445
|
+
# Get file's metadata keys and values.
|
446
|
+
Uploadcare::FileMetadata.index('FILE_ID_IN_YOUR_PROJECT')
|
447
|
+
|
448
|
+
# Get the value of a single metadata key.
|
449
|
+
Uploadcare::FileMetadata.show('FILE_ID_IN_YOUR_PROJECT', 'KEY')
|
450
|
+
|
451
|
+
# Update the value of a single metadata key. If the key does not exist, it will be created.
|
452
|
+
Uploadcare::FileMetadata.update('FILE_ID_IN_YOUR_PROJECT', 'KEY', 'VALUE')
|
453
|
+
|
454
|
+
# Delete a file's metadata key.
|
455
|
+
Uploadcare::FileMetadata.delete('FILE_ID_IN_YOUR_PROJECT', 'KEY')
|
456
|
+
```
|
457
|
+
|
343
458
|
#### Group
|
344
459
|
|
345
460
|
Groups are structures intended to organize sets of separate files. Each group is
|
@@ -355,6 +470,12 @@ That's a requirement of our API.
|
|
355
470
|
|
356
471
|
# group can be stored by group ID. It means that all files of a group will be stored on Uploadcare servers permanently
|
357
472
|
Uploadcare::Group.store(group.id)
|
473
|
+
|
474
|
+
# get a file group by its ID.
|
475
|
+
Uploadcare::Group.rest_info(group.id)
|
476
|
+
|
477
|
+
# group can be deleted by group ID.
|
478
|
+
Uploadcare::Group.delete(group.id)
|
358
479
|
```
|
359
480
|
|
360
481
|
#### GroupList
|
@@ -430,15 +551,56 @@ else
|
|
430
551
|
end
|
431
552
|
```
|
432
553
|
|
554
|
+
#### Add-Ons
|
555
|
+
|
556
|
+
An `Add-On` is an application implemented by Uploadcare that accepts uploaded files as an input and can produce other files and/or appdata as an output.
|
557
|
+
|
558
|
+
##### AWS Rekognition
|
559
|
+
|
560
|
+
```ruby
|
561
|
+
# Execute AWS Rekognition Add-On for a given target to detect labels in an image. Note: Detected labels are stored in the file's appdata.
|
562
|
+
Uploadcare::Addons.ws_rekognition_detect_labels('FILE_ID_IN_YOUR_PROJECT')
|
563
|
+
|
564
|
+
# Check the status of AWS Rekognition.
|
565
|
+
Uploadcare::Addons.ws_rekognition_detect_labels_status('RETURNED_ID_FROM_WS_REKOGNITION_DETECT_LABELS')
|
566
|
+
```
|
567
|
+
|
568
|
+
##### ClamAV
|
569
|
+
|
570
|
+
```ruby
|
571
|
+
# ClamAV virus checking Add-On for a given target.
|
572
|
+
Uploadcare::Addons.uc_clamav_virus_scan('FILE_ID_IN_YOUR_PROJECT')
|
573
|
+
|
574
|
+
# Checking and purge infected file.
|
575
|
+
Uploadcare::Addons.uc_clamav_virus_scan('FILE_ID_IN_YOUR_PROJECT', purge_infected: true )
|
576
|
+
|
577
|
+
# Check the status ClamAV virus scan.
|
578
|
+
Uploadcare::Addons.uc_clamav_virus_scan_status('RETURNED_ID_FROM_UC_CLAMAV_VIRUS_SCAN')
|
579
|
+
```
|
580
|
+
|
581
|
+
##### Remove.bg
|
582
|
+
|
583
|
+
```ruby
|
584
|
+
# Remove background image removal Add-On for a given target.
|
585
|
+
Uploadcare::Addons.remove_bg('FILE_ID_IN_YOUR_PROJECT')
|
586
|
+
|
587
|
+
# You can pass optional parameters.
|
588
|
+
# See the full list of parameters here: https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/removeBgExecute
|
589
|
+
Uploadcare::Addons.remove_bg('FILE_ID_IN_YOUR_PROJECT', crop: true, type_level: '2')
|
590
|
+
|
591
|
+
# Check the status of background image removal.
|
592
|
+
Uploadcare::Addons.remove_bg_status('RETURNED_ID_FROM_REMOVE_BG')
|
593
|
+
```
|
594
|
+
|
433
595
|
#### Project
|
434
596
|
|
435
597
|
`Project` provides basic info about the connected Uploadcare project. That
|
436
598
|
object is also an Hashie::Mash, so every methods out of
|
437
|
-
[these](https://uploadcare.com/api-refs/rest-api/v0.
|
599
|
+
[these](https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/projectInfo) will work.
|
438
600
|
|
439
601
|
```ruby
|
440
602
|
@project = Uploadcare::Project.project
|
441
|
-
# => #<Uploadcare::Api::Project collaborators=[], name="demo", pub_key="
|
603
|
+
# => #<Uploadcare::Api::Project collaborators=[], name="demo", pub_key="your_public_key", autostore_enabled=true>
|
442
604
|
|
443
605
|
@project.name
|
444
606
|
# => "demo"
|
@@ -513,7 +675,7 @@ Params in the response:
|
|
513
675
|
- **original_source** - built path for a particular video with all the conversion operations and parameters.
|
514
676
|
- **token** - a processing job token that can be used to get a [job status](https://uploadcare.com/docs/transformations/video-encoding/#status) (see below).
|
515
677
|
- **uuid** - UUID of your processed video file.
|
516
|
-
- **thumbnails_group_uuid** - holds :uuid-thumb-group, a UUID of a [file group](https://uploadcare.com/api-refs/rest-api/v0.
|
678
|
+
- **thumbnails_group_uuid** - holds :uuid-thumb-group, a UUID of a [file group](https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/groupsList) with thumbnails for an output video, based on the thumbs [operation](https://uploadcare.com/docs/transformations/video-encoding/#operation-thumbs) parameters.
|
517
679
|
- **problems** - problems related to your processing job, if any.
|
518
680
|
|
519
681
|
To convert multiple videos just add params as a hash for each video to the first argument of the `Uploadcare::VideoConverter#convert` method:
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'rest_client'
|
4
|
+
|
5
|
+
module Uploadcare
|
6
|
+
module Client
|
7
|
+
# API client for handling uploaded files
|
8
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Add-Ons
|
9
|
+
class AddonsClient < RestClient
|
10
|
+
# Execute ClamAV virus checking Add-On for a given target.
|
11
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/ucClamavVirusScanExecute
|
12
|
+
def uc_clamav_virus_scan(uuid, params = {})
|
13
|
+
content = { target: uuid, params: params }.to_json
|
14
|
+
post(uri: '/addons/uc_clamav_virus_scan/execute/', content: content)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Check the status of an Add-On execution request that had been started using the Execute Add-On operation.
|
18
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/ucClamavVirusScanExecutionStatus
|
19
|
+
def uc_clamav_virus_scan_status(uuid)
|
20
|
+
get(uri: "/addons/uc_clamav_virus_scan/execute/status/#{query_params(uuid)}")
|
21
|
+
end
|
22
|
+
|
23
|
+
# Execute AWS Rekognition Add-On for a given target to detect labels in an image.
|
24
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/awsRekognitionExecute
|
25
|
+
def ws_rekognition_detect_labels(uuid)
|
26
|
+
content = { target: uuid }.to_json
|
27
|
+
post(uri: '/addons/aws_rekognition_detect_labels/execute/', content: content)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Check the status of an Add-On execution request that had been started using the Execute Add-On operation.
|
31
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/awsRekognitionExecutionStatus
|
32
|
+
def ws_rekognition_detect_labels_status(uuid)
|
33
|
+
get(uri: "/addons/aws_rekognition_detect_labels/execute/status/#{query_params(uuid)}")
|
34
|
+
end
|
35
|
+
|
36
|
+
# Execute remove.bg background image removal Add-On for a given target.
|
37
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/removeBgExecute
|
38
|
+
def remove_bg(uuid, params = {})
|
39
|
+
content = { target: uuid, params: params }.to_json
|
40
|
+
post(uri: '/addons/remove_bg/execute/', content: content)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Check the status of an Add-On execution request that had been started using the Execute Add-On operation.
|
44
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/removeBgExecutionStatus
|
45
|
+
def remove_bg_status(uuid)
|
46
|
+
get(uri: "/addons/remove_bg/execute/status/#{query_params(uuid)}")
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def query_params(uuid)
|
52
|
+
"?#{URI.encode_www_form(request_id: uuid)}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -8,7 +8,7 @@ module Uploadcare
|
|
8
8
|
module Conversion
|
9
9
|
# This is a base client for conversion operations
|
10
10
|
#
|
11
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
11
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Conversion
|
12
12
|
class BaseConversionClient < RestClient
|
13
13
|
API_VERSION_HEADER_VALUE = 'application/vnd.uploadcare-v0.5+json'
|
14
14
|
|
@@ -8,7 +8,7 @@ module Uploadcare
|
|
8
8
|
module Conversion
|
9
9
|
# This is client for document conversion
|
10
10
|
#
|
11
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
11
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/documentConvert
|
12
12
|
class DocumentConversionClient < BaseConversionClient
|
13
13
|
def convert_many(
|
14
14
|
arr,
|
@@ -9,7 +9,7 @@ module Uploadcare
|
|
9
9
|
module Conversion
|
10
10
|
# This is client for video conversion
|
11
11
|
#
|
12
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
12
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/videoConvert
|
13
13
|
class VideoConversionClient < BaseConversionClient
|
14
14
|
def convert_many(
|
15
15
|
params,
|
@@ -6,7 +6,7 @@ module Uploadcare
|
|
6
6
|
module Client
|
7
7
|
# API client for handling single files
|
8
8
|
# @see https://uploadcare.com/docs/api_reference/rest/accessing_files/
|
9
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
9
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/File
|
10
10
|
class FileClient < RestClient
|
11
11
|
# Gets list of files without pagination fields
|
12
12
|
def index
|
@@ -15,27 +15,31 @@ module Uploadcare
|
|
15
15
|
end
|
16
16
|
|
17
17
|
# Acquire file info
|
18
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
18
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/fileInfo
|
19
19
|
def info(uuid)
|
20
20
|
get(uri: "/files/#{uuid}/")
|
21
21
|
end
|
22
22
|
alias file info
|
23
23
|
|
24
|
-
#
|
25
|
-
|
26
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.5.0/#operation/copyFile
|
27
|
-
def copy(**options)
|
24
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/File/operation/createLocalCopy
|
25
|
+
def local_copy(options = {})
|
28
26
|
body = options.compact.to_json
|
29
|
-
post(uri: '/files/', content: body)
|
27
|
+
post(uri: '/files/local_copy/', content: body)
|
30
28
|
end
|
31
29
|
|
32
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
30
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/File/operation/createRemoteCopy
|
31
|
+
def remote_copy(options = {})
|
32
|
+
body = options.compact.to_json
|
33
|
+
post(uri: '/files/remote_copy/', content: body)
|
34
|
+
end
|
35
|
+
|
36
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/deleteFileStorage
|
33
37
|
def delete(uuid)
|
34
|
-
request(method: 'DELETE', uri: "/files/#{uuid}/")
|
38
|
+
request(method: 'DELETE', uri: "/files/#{uuid}/storage/")
|
35
39
|
end
|
36
40
|
|
37
41
|
# Store a single file, preventing it from being deleted in 2 weeks
|
38
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
42
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/storeFile
|
39
43
|
def store(uuid)
|
40
44
|
put(uri: "/files/#{uuid}/storage/")
|
41
45
|
end
|
@@ -7,13 +7,13 @@ module Uploadcare
|
|
7
7
|
# API client for handling file lists
|
8
8
|
class FileListClient < RestClient
|
9
9
|
# Returns a pagination json of files stored in project
|
10
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
10
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/filesList
|
11
11
|
#
|
12
12
|
# valid options:
|
13
13
|
# removed: [true|false]
|
14
14
|
# stored: [true|false]
|
15
15
|
# limit: (1..1000)
|
16
|
-
# ordering: ["datetime_uploaded"|"-datetime_uploaded"
|
16
|
+
# ordering: ["datetime_uploaded"|"-datetime_uploaded"]
|
17
17
|
# from: number of files skipped
|
18
18
|
def file_list(options = {})
|
19
19
|
query = options.empty? ? '' : "?#{URI.encode_www_form(options)}"
|
@@ -21,7 +21,7 @@ module Uploadcare
|
|
21
21
|
end
|
22
22
|
|
23
23
|
# Make a set of files "stored". This will prevent them from being deleted automatically
|
24
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
24
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/filesStoring
|
25
25
|
# uuids: Array
|
26
26
|
def batch_store(uuids)
|
27
27
|
body = uuids.to_json
|
@@ -31,7 +31,7 @@ module Uploadcare
|
|
31
31
|
alias request_delete delete
|
32
32
|
|
33
33
|
# Delete several files by list of uids
|
34
|
-
# @see https://uploadcare.com/api-refs/rest-api/v0.
|
34
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/filesDelete
|
35
35
|
# uuids: Array
|
36
36
|
def batch_delete(uuids)
|
37
37
|
body = uuids.to_json
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'rest_client'
|
4
|
+
|
5
|
+
module Uploadcare
|
6
|
+
module Client
|
7
|
+
# API client for handling single metadata_files
|
8
|
+
# @see https://uploadcare.com/docs/file-metadata/
|
9
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/File-metadata
|
10
|
+
class FileMetadataClient < RestClient
|
11
|
+
# Get file's metadata keys and values
|
12
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/fileMetadata
|
13
|
+
def index(uuid)
|
14
|
+
get(uri: "/files/#{uuid}/metadata/")
|
15
|
+
end
|
16
|
+
|
17
|
+
# Get the value of a single metadata key.
|
18
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/fileMetadataKey
|
19
|
+
def show(uuid, key)
|
20
|
+
get(uri: "/files/#{uuid}/metadata/#{key}/")
|
21
|
+
end
|
22
|
+
|
23
|
+
# Update the value of a single metadata key. If the key does not exist, it will be created.
|
24
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/updateFileMetadataKey
|
25
|
+
def update(uuid, key, value)
|
26
|
+
put(uri: "/files/#{uuid}/metadata/#{key}/", content: value.to_json)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Delete a file's metadata key.
|
30
|
+
# @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/deleteFileMetadataKey
|
31
|
+
def delete(uuid, key)
|
32
|
+
request(method: 'DELETE', uri: "/files/#{uuid}/metadata/#{key}/")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -10,8 +10,8 @@ module Uploadcare
|
|
10
10
|
class GroupClient < UploadClient
|
11
11
|
# Create files group from a set of files by using their UUIDs.
|
12
12
|
# @see https://uploadcare.com/api-refs/upload-api/#operation/createFilesGroup
|
13
|
-
def create(file_list,
|
14
|
-
body_hash = group_body_hash(file_list,
|
13
|
+
def create(file_list, options = {})
|
14
|
+
body_hash = group_body_hash(file_list, options)
|
15
15
|
body = HTTP::FormData::Multipart.new(body_hash)
|
16
16
|
post(path: 'group/',
|
17
17
|
headers: { 'Content-Type': body.content_type },
|
@@ -31,8 +31,8 @@ module Uploadcare
|
|
31
31
|
ids.zip(file_ids).to_h
|
32
32
|
end
|
33
33
|
|
34
|
-
def group_body_hash(file_list,
|
35
|
-
{ pub_key: Uploadcare.config.public_key }.merge(file_params(parse_file_list(file_list))).merge(
|
34
|
+
def group_body_hash(file_list, options = {})
|
35
|
+
{ pub_key: Uploadcare.config.public_key }.merge(file_params(parse_file_list(file_list))).merge(options)
|
36
36
|
end
|
37
37
|
|
38
38
|
# API accepts only list of ids, but some users may want to upload list of files
|