uploadcare-rails 3.4.0 → 3.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88ea791d5c14c9fc7ac61a6599bd3276dd8ad0a663b05734de131055a5a585e3
4
- data.tar.gz: 33df2e2e0047b05335533407de9cc2ce017a601fb4edf29782f0ff5ec5f19d54
3
+ metadata.gz: c3752eab2d238aab90af10d0bea8e9c7a14c3aba55909529a27c9c1e20cfb60d
4
+ data.tar.gz: a49e6107cb976f4c38fe5f7dc7f92a637e25e1c3ef14fb794aa3ecd730fef1e9
5
5
  SHA512:
6
- metadata.gz: 93f273c141ece91307c45fe5e8ea6c02d5d3cfa2f7497ac5e8b97745f47a1e90dfd991d28036ff26605c5624cae4ad0487026496f579b4544110c1ffb56f5154
7
- data.tar.gz: 81980a67b96a2f2aed8d2ec2f6ee2ba0691a77175476da55746dcd63db6104ed3f0376cbf7077fee43b4d0cffff9ed09a9e3bc925bbfd704cf5e0a3ea54f4d5d
6
+ metadata.gz: '09a704803fdf183ed4a0656ad2e33f18b6586cba8cd8112041c3cd35ee1d8220afe04d870d18faafa32fed468c3593e8a34f0a1f6cc1c788b96556589c7c83e1'
7
+ data.tar.gz: 79f55a729a8989feff52dca3db695edf6f410f23a60df6dbeff883b7d17a8b705c948e8427deb2a32f698df936c540f946125971b357320c9c657623a76fb5d3
data/CHANGELOG.md CHANGED
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based now on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 3.4.2 — 2024-05-11
8
+
9
+ ### Added
10
+ * Added API support for `AWS Rekognition Moderation` Add-On.
11
+
12
+ ## 3.4.1 — 2024-03-24
13
+
14
+ ### Fixed
15
+
16
+ * Fixed invalid group id error when >= 10 files are uploaded when using `mount_uploadcare_file_group`.
17
+
7
18
  ## 3.4.0 — 2024-03-05
8
19
 
9
20
  ### Fixed
data/README.md CHANGED
@@ -284,10 +284,54 @@ The value will be available in the controller by `params[:post][:picture]`.
284
284
 
285
285
  The helper is detecting the value of the `multiple` property based on the mount type in your model.
286
286
 
287
+ ### Caching issues with Turbolinks/Hotwire
288
+
289
+ If you are facing issue, with multiple input elements being rendered due to turbolinks caching you can append this fix in the `app/javascript/application.js` to overcome this:
290
+
291
+ ```
292
+ document.addEventListener('turbolinks:before-cache', function() {
293
+ const dialogClose = document.querySelector('.uploadcare--dialog__close');
294
+ if (dialogClose) {
295
+ dialogClose.dispatchEvent(new Event('click'));
296
+ }
297
+
298
+ const dialog = document.querySelector('.uploadcare--dialog');
299
+ if (dialog) {
300
+ dialog.remove();
301
+ }
302
+
303
+ const widgets = document.querySelectorAll('.uploadcare--widget');
304
+ widgets.forEach(widget => {
305
+ widget.remove();
306
+ });
307
+ });
308
+ ```
309
+
310
+ Similarly if you are using [Hotwire](https://hotwired.dev/) then use can you use below code:
311
+
312
+ ```
313
+ document.addEventListener('turbo:before-cache', function() {
314
+ const dialogClose = document.querySelector('.uploadcare--dialog__close');
315
+ if (dialogClose) {
316
+ dialogClose.dispatchEvent(new Event('click'));
317
+ }
318
+
319
+ const dialog = document.querySelector('.uploadcare--dialog');
320
+ if (dialog) {
321
+ dialog.remove();
322
+ }
323
+
324
+ const widgets = document.querySelectorAll('.uploadcare--widget');
325
+ widgets.forEach(widget => {
326
+ widget.remove();
327
+ });
328
+ });
329
+ ```
330
+
287
331
  ### File and Group wrappers
288
332
 
289
333
  When you mount either Uploadcare File or Group to an attribute, this attribute is getting wrapped with
290
- a Uploadcare object. This feature adds some usefull methods to the attribute.
334
+ a Uploadcare object. This feature adds some useful methods to the attribute.
291
335
 
292
336
  #### Uploadcare File
293
337
 
@@ -300,50 +344,51 @@ class Post < ApplicationRecord
300
344
  end
301
345
  ```
302
346
 
303
- And then you create a new Post object specifying a CDN-url for your prevously uploaded Uploadcare file:
347
+ And then you create a new Post object specifying a CDN-url for your previously uploaded Uploadcare file:
304
348
 
305
- ```console
306
- $ post = Post.create(picture: "https://ucarecdn.com/2d33999d-c74a-4ff9-99ea-abc23496b052/")
349
+ ```ruby
350
+ post = Post.create(picture: "https://ucarecdn.com/2d33999d-c74a-4ff9-99ea-abc23496b052/")
307
351
  ```
308
352
 
309
353
  Now the `post.picture` is an Uploadcare::Rails::File. Following methods are supported:
310
354
 
311
- ```console
355
+ ```ruby
312
356
  # Store the file on an Uploadcare server permanently:
313
- $ post.picture.store
357
+ post.picture.store
314
358
  # => {
315
359
  # "cdn_url"=>"https://ucarecdn.com/2d33999d-c74a-4ff9-99ea-abc23496b052/",
316
360
  # ...other group data...
317
361
  # }
318
- #
362
+
363
+ #
319
364
  # Delete the file from an Uploadcare server permanently:
320
- $ post.picture.delete
365
+ post.picture.delete
321
366
  # => {
322
367
  # "datetime_removed"=>"2021-07-30T09:19:30.797174Z",
323
368
  # ...other group data...
324
369
  # }
325
- #
370
+
326
371
  # Get CDN-url of an object attribute:
327
- $ post.picture.to_s
372
+ post.picture.to_s
328
373
  # => "https://ucarecdn.com/2d33999d-c74a-4ff9-99ea-abc23496b052/"
329
- #
374
+
330
375
  # Load object (send a GET request to the server to get all the file's data)
331
376
  # This data will be cached if the cache_files option is set to true
332
377
  # Default data (without asking an Uploadcare server) for each file contains cdn_url and uuid only:
333
- $ post.picture.load
378
+ post.picture.load
334
379
  # => {
335
380
  # "cdn_url"=>"https://ucarecdn.com/2d33999d-c74a-4ff9-99ea-abc23496b052/",
336
381
  # ...other file data...
337
382
  # }
338
- #
383
+
339
384
  # Check if an attribute loaded from the server.
340
385
  # Will return false unless the :load or the :store methods are called:
341
- $ post.picture.loaded?
386
+ post.picture.loaded?
342
387
  # => true
343
- #
388
+
344
389
  # More about image transformations below.
345
390
  # Transform a CDN-url to get a new transformed image's source. Works for images only:
346
- $ post.picture.transform_url(quality: "better")
391
+ post.picture.transform_url(quality: "better")
347
392
  # => "https://ucarecdn.com/2d33999d-c74a-4ff9-99ea-abc23496b052/-/quality/better/"
348
393
  ```
349
394
 
@@ -360,15 +405,15 @@ end
360
405
 
361
406
  Creating a new `post` with the Group mounted:
362
407
 
363
- ```console
364
- $ post = Post.create(attachments: "https://ucarecdn.com/dbc4e868-b7a6-43ff-a35f-2ebef935dc1b~1/")
408
+ ```ruby
409
+ post = Post.create(attachments: "https://ucarecdn.com/dbc4e868-b7a6-43ff-a35f-2ebef935dc1b~1/")
365
410
  ```
366
411
 
367
412
  Now the `post.attachments` is an Uploadcare::Rails::Group. Following methods are supported:
368
413
 
369
- ```console
414
+ ```ruby
370
415
  # Store the file group on an Uploadcare server permanently:
371
- $ post.attachments.store
416
+ post.attachments.store
372
417
  # => {
373
418
  # "cdn_url"=>"https://ucarecdn.com/dbc4e868-b7a6-43ff-a35f-2ebef935dc1b~1/",
374
419
  # ...other group data...
@@ -377,20 +422,21 @@ $ post.attachments.store
377
422
  # ...other file data...
378
423
  # }]
379
424
  # }
380
- #
425
+
426
+ #
381
427
  # Delete the file group from an Uploadcare server permanently:
382
- $ post.attachments.delete
428
+ post.attachments.delete
383
429
  # => {
384
430
  # "datetime_removed"=>"2021-07-30T09:19:30.797174Z",
385
431
  # ...other group data...
386
432
  # }
387
- #
433
+
388
434
  # Get CDN-url of an object attribute:
389
- $ post.attachments.to_s
435
+ post.attachments.to_s
390
436
  # => "https://ucarecdn.com/dbc4e868-b7a6-43ff-a35f-2ebef935dc1b~1/"
391
- #
437
+
392
438
  # Load object — works the same way as for the File:
393
- $ post.attachments.load
439
+ post.attachments.load
394
440
  # => {
395
441
  # "cdn_url"=>"https://ucarecdn.com/dbc4e868-b7a6-43ff-a35f-2ebef935dc1b~1/",
396
442
  # ...other group data...
@@ -399,19 +445,19 @@ $ post.attachments.load
399
445
  # ...other file data...
400
446
  # }]
401
447
  # }
402
- #
448
+
403
449
  # Check if an attribute loaded from the server:
404
- $ post.attachments.loaded?
450
+ post.attachments.loaded?
405
451
  # => true
406
- #
452
+
407
453
  # As we don't want to show (on the html-page) a file group itself,
408
454
  # we can get CDN-urls for file that the group contains. No loading group or files needed.
409
455
  # This works for images only:
410
- $ post.attachments.transform_file_urls(quality: "better")
456
+ post.attachments.transform_file_urls(quality: "better")
411
457
  # => ["https://ucarecdn.com/dbc4e868-b7a6-43ff-a35f-2ebef935dc1b~1/nth/0/-/quality/better/"]
412
- #
458
+
413
459
  # If you want to get non-transformed file urls, use:
414
- $ post.attachments.file_urls
460
+ post.attachments.file_urls
415
461
  # => ["https://ucarecdn.com/dbc4e868-b7a6-43ff-a35f-2ebef935dc1b~1/nth/0/"]
416
462
  ```
417
463
 
@@ -421,15 +467,15 @@ $ post.attachments.file_urls
421
467
  Uploadcare provides a way to transform images stored on Uploadcare services specifying a list of operations.
422
468
  If an operation has just one option, you can specify it like key-value:
423
469
 
424
- ```console
425
- $ post.picture.transform_url(quality: "better")
470
+ ```ruby
471
+ post.picture.transform_url(quality: "better")
426
472
  # => "https://ucarecdn.com/ebbb9929-eb92-4f52-a212-eecfdb19d27d/-/quality/better/"
427
473
  ```
428
474
 
429
475
  and if an operation supports several options — just set them as a Hash:
430
476
 
431
- ```console
432
- $ post.picture.transform_url(crop: { dimensions: "300x500", coords: "50, 50", alignment: "center" })
477
+ ```ruby
478
+ post.picture.transform_url(crop: { dimensions: "300x500", coords: "50, 50", alignment: "center" })
433
479
  # => "https://ucarecdn.com/ebbb9929-eb92-4f52-a212-eecfdb19d27d/-/crop/300x500/50,50/center/"
434
480
  ```
435
481
 
@@ -445,12 +491,13 @@ Uploadcare provides [APIs](https://uploadcare.com/docs/start/api/) to manage fil
445
491
 
446
492
  #### Upload a single file
447
493
 
448
- ```console
494
+ ```ruby
449
495
  # Load a file
450
- $ file = File.open("kitten.png")
496
+ file = File.open("kitten.png")
451
497
  # => #<File:kitten.png>
498
+
452
499
  # Upload file to Uploadcare
453
- $ uploadcare_file = Uploadcare::UploadApi.upload_file(file)
500
+ uploadcare_file = Uploadcare::UploadApi.upload_file(file)
454
501
  # => {
455
502
  # "uuid"=>"2d33999d-c74a-4ff9-99ea-abc23496b053",
456
503
  # ...other file data...
@@ -459,10 +506,10 @@ $ uploadcare_file = Uploadcare::UploadApi.upload_file(file)
459
506
 
460
507
  This method supports single file uploading and uploading files from an URL (depending on the type of first argument - can be either String (i.e. URL) or File).
461
508
 
462
- ```console
509
+ ```ruby
463
510
  # Upload file from URL
464
- $ url = "https://ucarecdn.com/80b807be-faad-4f01-bbbe-0bbde172b9de/1secVIDEO.mp4"
465
- $ uploadcare_file = Uploadcare::UploadApi.upload_file(url)
511
+ url = "https://ucarecdn.com/80b807be-faad-4f01-bbbe-0bbde172b9de/1secVIDEO.mp4"
512
+ uploadcare_file = Uploadcare::UploadApi.upload_file(url)
466
513
  # => [
467
514
  # {
468
515
  # "size"=>22108,
@@ -479,12 +526,12 @@ $ uploadcare_file = Uploadcare::UploadApi.upload_file(url)
479
526
 
480
527
  #### Upload several files
481
528
 
482
- ```console
529
+ ```ruby
483
530
  # Load a file
484
- $ file = File.open("kitten.png")
531
+ file = File.open("kitten.png")
485
532
  # => #<File:kitten.png>
486
533
  # Upload several files to Uploadcare
487
- $ uploadcare_file = Uploadcare::UploadApi.upload_files([file])
534
+ uploadcare_file = Uploadcare::UploadApi.upload_files([file])
488
535
  # => [
489
536
  # {
490
537
  # "uuid"=>"2dfc94e6-e74e-4014-9ff5-a71b8928f4fa",
@@ -500,14 +547,14 @@ FileApi provides an interface to manage single files, stored on Uploadcare Serve
500
547
 
501
548
  #### Get files
502
549
 
503
- ```console
550
+ ```ruby
504
551
  # Valid options:
505
552
  # removed: [true|false]
506
553
  # stored: [true|false]
507
554
  # limit: (1..1000)
508
555
  # ordering: ["datetime_uploaded"|"-datetime_uploaded"]
509
556
  # from: A starting point for filtering files. The value depends on your ordering parameter value.
510
- $ Uploadcare::FileApi.get_files(ordering: "datetime_uploaded", limit: 10)
557
+ Uploadcare::FileApi.get_files(ordering: "datetime_uploaded", limit: 10)
511
558
  # => {
512
559
  # "next"=>nil,
513
560
  # "previous"=>nil,
@@ -525,7 +572,7 @@ $ Uploadcare::FileApi.get_files(ordering: "datetime_uploaded", limit: 10)
525
572
 
526
573
  #### Get a file by UUID
527
574
 
528
- ```console
575
+ ```ruby
529
576
  $ Uploadcare::FileApi.get_file("7b2b35b4-125b-4c1e-9305-12e8da8916eb")
530
577
  # => {
531
578
  # "cdn_url"=>"https://ucarecdn.com/7b2b35b4-125b-4c1e-9305-12e8da8916eb/",
@@ -536,10 +583,10 @@ $ Uploadcare::FileApi.get_file("7b2b35b4-125b-4c1e-9305-12e8da8916eb")
536
583
 
537
584
  #### Copy a file to default storage. Source can be UID or full CDN link
538
585
 
539
- ```console
586
+ ```ruby
540
587
  # Valid options:
541
588
  # stored: [true|false]
542
- $ Uploadcare::FileApi.local_copy_file("2d33999d-c74a-4ff9-99ea-abc23496b052", store: false)
589
+ Uploadcare::FileApi.local_copy_file("2d33999d-c74a-4ff9-99ea-abc23496b052", store: false)
543
590
  # => {
544
591
  # "uuid"=>"f486132c-2fa5-454e-9e70-93c5e01a7e04",
545
592
  # ...other file data...
@@ -548,10 +595,10 @@ $ Uploadcare::FileApi.local_copy_file("2d33999d-c74a-4ff9-99ea-abc23496b052", st
548
595
 
549
596
  #### Copy a file to custom storage. Source can be UID or full CDN link
550
597
 
551
- ```console
598
+ ```ruby
552
599
  # Valid options:
553
600
  # make_public: [true|false]
554
- $ Uploadcare::FileApi.remote_copy_file("2d33999d-c74a-4ff9-99ea-abc23496b052", "mytarget", make_public: false)
601
+ Uploadcare::FileApi.remote_copy_file("2d33999d-c74a-4ff9-99ea-abc23496b052", "mytarget", make_public: false)
555
602
  # => {
556
603
  # "uuid"=>"f486132c-2fa5-454e-9e70-93c5e01a7e04",
557
604
  # ...other file data...
@@ -561,8 +608,8 @@ $ Uploadcare::FileApi.remote_copy_file("2d33999d-c74a-4ff9-99ea-abc23496b052", "
561
608
 
562
609
  #### Store a file by UUID
563
610
 
564
- ```console
565
- $ Uploadcare::FileApi.store_file("2d33999d-c74a-4ff9-99ea-abc23496b052")
611
+ ```ruby
612
+ Uploadcare::FileApi.store_file("2d33999d-c74a-4ff9-99ea-abc23496b052")
566
613
  # => {
567
614
  # "uuid"=>"2d33999d-c74a-4ff9-99ea-abc23496b052",
568
615
  # ...other file data...
@@ -572,8 +619,8 @@ $ Uploadcare::FileApi.store_file("2d33999d-c74a-4ff9-99ea-abc23496b052")
572
619
 
573
620
  #### Store several files by UUIDs
574
621
 
575
- ```console
576
- $ Uploadcare::FileApi.store_files(["f486132c-2fa5-454e-9e70-93c5e01a7e04"])
622
+ ```ruby
623
+ Uploadcare::FileApi.store_files(["f486132c-2fa5-454e-9e70-93c5e01a7e04"])
577
624
  # => {
578
625
  # "result" => [
579
626
  # {
@@ -587,8 +634,8 @@ $ Uploadcare::FileApi.store_files(["f486132c-2fa5-454e-9e70-93c5e01a7e04"])
587
634
 
588
635
  #### Delete a file by UUID
589
636
 
590
- ```console
591
- $ Uploadcare::FileApi.delete_file("2d33999d-c74a-4ff9-99ea-abc23496b052")
637
+ ```ruby
638
+ Uploadcare::FileApi.delete_file("2d33999d-c74a-4ff9-99ea-abc23496b052")
592
639
  # => {
593
640
  # "uuid"=>"2d33999d-c74a-4ff9-99ea-abc23496b052",
594
641
  # ...other file data...
@@ -598,8 +645,8 @@ $ Uploadcare::FileApi.delete_file("2d33999d-c74a-4ff9-99ea-abc23496b052")
598
645
 
599
646
  #### Delete several files by UUIDs
600
647
 
601
- ```console
602
- $ Uploadcare::FileApi.delete_files(["f486132c-2fa5-454e-9e70-93c5e01a7e04"])
648
+ ```ruby
649
+ Uploadcare::FileApi.delete_files(["f486132c-2fa5-454e-9e70-93c5e01a7e04"])
603
650
  # => {
604
651
  # "result" => [
605
652
  # {
@@ -617,13 +664,13 @@ GroupApi provides an interface to manage file groups stored on Uploadcare Server
617
664
 
618
665
  #### Get file groups
619
666
 
620
- ```console
667
+ ```ruby
621
668
  # Valid options:
622
669
  # limit: (1..1000)
623
670
  # ordering: ["datetime_created"|"-datetime_created"]
624
671
  # from: A starting point for filtering group lists. MUST be a datetime value with T used as a separator.
625
672
  # example: "2015-01-02T10:00:00"
626
- $ Uploadcare::GroupApi.get_groups(ordering: "datetime_uploaded", limit: 10)
673
+ Uploadcare::GroupApi.get_groups(ordering: "datetime_uploaded", limit: 10)
627
674
  # => {
628
675
  # "next"=>"next"=>"https://api.uploadcare.com/groups/?ordering=datetime_uploaded&limit=10&from=2021-07-16T11%3A12%3A12.236280%2B00%3A00&offset=0",
629
676
  # "previous"=>nil,
@@ -646,8 +693,8 @@ $ Uploadcare::GroupApi.get_groups(ordering: "datetime_uploaded", limit: 10)
646
693
 
647
694
  #### Get a single file group by a group ID
648
695
 
649
- ```console
650
- $ Uploadcare::GroupApi.get_group("d476f4c9-44a9-4670-88a5-c3cf5d26a6c2~20")
696
+ ```ruby
697
+ Uploadcare::GroupApi.get_group("d476f4c9-44a9-4670-88a5-c3cf5d26a6c2~20")
651
698
  # => {
652
699
  # "cdn_url"=>"https://ucarecdn.com/d476f4c9-44a9-4670-88a5-c3cf5d26a6c2~20/",
653
700
  # ...other group data...
@@ -661,8 +708,8 @@ $ Uploadcare::GroupApi.get_group("d476f4c9-44a9-4670-88a5-c3cf5d26a6c2~20")
661
708
 
662
709
  #### Store files of a group by a group ID
663
710
 
664
- ```console
665
- $ Uploadcare::GroupApi.store_group("d476f4c9-44a9-4670-88a5-c3cf5d26a6c2~20")
711
+ ```ruby
712
+ Uploadcare::GroupApi.store_group("d476f4c9-44a9-4670-88a5-c3cf5d26a6c2~20")
666
713
  # => "200 OK"
667
714
  ```
668
715
 
@@ -675,8 +722,8 @@ It is possible to specify transformed URLs with UUIDs of files OR just UUIDs.
675
722
  NOTE: Be sure to add a trailing slash "/" to the URL in case of specifying transformed URLs.
676
723
  ```
677
724
 
678
- ```console
679
- $ Uploadcare::GroupApi.create_group(["e08dec9e-7e25-49c5-810e-4c360d86bbae/-/resize/300x500/"])
725
+ ```ruby
726
+ Uploadcare::GroupApi.create_group(["e08dec9e-7e25-49c5-810e-4c360d86bbae/-/resize/300x500/"])
680
727
  # => {
681
728
  # "cdn_url"=>"https://ucarecdn.com/d476f4c9-44a9-4670-88a5-c3cf5d26a6c2~1/",
682
729
  # ...other group data...
@@ -690,8 +737,8 @@ $ Uploadcare::GroupApi.create_group(["e08dec9e-7e25-49c5-810e-4c360d86bbae/-/res
690
737
 
691
738
  #### Delete a file group by its ID
692
739
 
693
- ```console
694
- $ Uploadcare::GroupApi.delete_group("90c93e96-965b-4dd2-b323-39d9bd5f492c~1")
740
+ ```ruby
741
+ Uploadcare::GroupApi.delete_group("90c93e96-965b-4dd2-b323-39d9bd5f492c~1")
695
742
  # => "200 OK"
696
743
  ```
697
744
 
@@ -700,8 +747,8 @@ $ Uploadcare::GroupApi.delete_group("90c93e96-965b-4dd2-b323-39d9bd5f492c~1")
700
747
 
701
748
  ProjectApi interface provides just one method - to get a configuration of your Uploadcare project.
702
749
 
703
- ```console
704
- $ Uploadcare::ProjectApi.get_project
750
+ ```ruby
751
+ Uploadcare::ProjectApi.get_project
705
752
  # => {
706
753
  # "collaborators"=>[],
707
754
  # "name"=>"New project",
@@ -719,8 +766,8 @@ WebhookApi allows to manage Uploadcare webhooks.
719
766
 
720
767
  This method returns a non-paginated list of webhooks set in your project
721
768
 
722
- ```console
723
- $ Uploadcare::WebhookApi.get_webhooks
769
+ ```ruby
770
+ Uploadcare::WebhookApi.get_webhooks
724
771
  # => [{
725
772
  # "id"=>815677,
726
773
  # "created"=>"2021-08-02T05:02:14.588794Z",
@@ -740,11 +787,11 @@ This method requires an URL that is triggered by an event, for example, a file u
740
787
  Each webhook payload can be signed with a secret (the `signing_secret` option) to ensure that the request comes from the expected sender.
741
788
  More info about secure webhooks [here](https://uploadcare.com/docs/security/secure-webhooks/).
742
789
 
743
- ```console
790
+ ```ruby
744
791
  # Valid options:
745
792
  # event: ["file.uploaded"]
746
793
  # is_active: [true|false]
747
- $ Uploadcare::WebhookApi.create_webhook("https://example.com", event: "file.uploaded", is_active: true, signing_secret: "some-secret")
794
+ Uploadcare::WebhookApi.create_webhook("https://example.com", event: "file.uploaded", is_active: true, signing_secret: "some-secret")
748
795
  # => {
749
796
  # "id"=>815671,
750
797
  # "created"=>"2021-08-02T05:02:14.588794Z",
@@ -761,11 +808,11 @@ $ Uploadcare::WebhookApi.create_webhook("https://example.com", event: "file.uplo
761
808
 
762
809
  Updating a webhook is available if webhook ID is known. The ID is returned in a response on creating or listing webhooks. Setting a signing secret is supported when updating a webhook as well.
763
810
 
764
- ```console
811
+ ```ruby
765
812
  # Valid options:
766
813
  # event: Presently, we only support the "file.uploaded" event
767
814
  # is_active: [true|false]
768
- $ Uploadcare::WebhookApi.update_webhook("webhook_id", target_url: "https://example1.com", event: "file.uploaded", is_active: false, signing_secret: "some-secret")
815
+ Uploadcare::WebhookApi.update_webhook("webhook_id", target_url: "https://example1.com", event: "file.uploaded", is_active: false, signing_secret: "some-secret")
769
816
  # => {
770
817
  # "id"=>815671,
771
818
  # "created"=>"2021-08-02T05:02:14.588794Z",
@@ -780,8 +827,8 @@ $ Uploadcare::WebhookApi.update_webhook("webhook_id", target_url: "https://examp
780
827
 
781
828
  #### Delete an existing webhook by a target_url
782
829
 
783
- ```console
784
- $ Uploadcare::WebhookApi.delete_webhook("https://example1.com")
830
+ ```ruby
831
+ Uploadcare::WebhookApi.delete_webhook("https://example1.com")
785
832
  # => Success(nil)
786
833
  ```
787
834
 
@@ -795,11 +842,11 @@ This method requires an UUID of a previously uploaded to Uploadcare file and tar
795
842
  If using an image format, you can also specify a page number that must be converted for a document containing pages.
796
843
  More info about document conversion can be found [here](https://uploadcare.com/docs/transformations/document-conversion/).
797
844
 
798
- ```console
799
- $ Uploadcare::ConversionApi.convert_document(
800
- $ { uuid: "466740dd-cfad-4de4-9218-1ddc0edf7aa6", format: "png", page: 1 },
801
- $ store: false
802
- $ )
845
+ ```ruby
846
+ Uploadcare::ConversionApi.convert_document(
847
+ { uuid: "466740dd-cfad-4de4-9218-1ddc0edf7aa6", format: "png", page: 1 },
848
+ store: false
849
+ )
803
850
  # => Success({
804
851
  # :result=>[{
805
852
  # :original_source=>"466740dd-cfad-4de4-9218-1ddc0edf7aa6/document/-/format/png/-/page/1/",
@@ -815,8 +862,8 @@ $ )
815
862
 
816
863
  This method requires a token obtained in a response to the [convert_document](#convert-a-document) method.
817
864
 
818
- ```console
819
- $ Uploadcare::ConversionApi.get_document_conversion_status(21316034)
865
+ ```ruby
866
+ Uploadcare::ConversionApi.get_document_conversion_status(21316034)
820
867
  # => Success({
821
868
  # :result=>{
822
869
  # :uuid=>"db6e52b8-cc03-4174-a07a-012be43b144e"
@@ -833,17 +880,17 @@ Such as the document conversion method, this method requires an UUID of a previo
833
880
  Also you have several options to control the way a video will be converted. All of them are optional.
834
881
  Description of valid options and other info about video conversion can be found [here](https://uploadcare.com/docs/transformations/video-encoding/).
835
882
 
836
- ```console
837
- $ Uploadcare::ConversionApi.convert_video(
838
- $ {
839
- $ uuid: "466740dd-cfad-4de4-9218-1ddc0edf7aa6",
840
- $ format: "ogg",
841
- $ quality: "best",
842
- $ cut: { start_time: "0:0:0.0", length: "0:0:1.0" },
843
- $ thumbs: { N: 2, number: 1 }
844
- $ },
845
- $ store: false
846
- $ )
883
+ ```ruby
884
+ Uploadcare::ConversionApi.convert_video(
885
+ {
886
+ uuid: "466740dd-cfad-4de4-9218-1ddc0edf7aa6",
887
+ format: "ogg",
888
+ quality: "best",
889
+ cut: { start_time: "0:0:0.0", length: "0:0:1.0" },
890
+ thumbs: { N: 2, number: 1 }
891
+ },
892
+ store: false
893
+ )
847
894
  # => Success({
848
895
  # :result=>[{
849
896
  # :original_source=>"80b807be-faad-4f01-bbbe-0bbde172b9de/video/-/size/600x400/change_ratio/-/quality/best/-/format/ogg/-/cut/0:0:0.0/0:0:1.0/-/thumbs~2/1/",
@@ -860,8 +907,8 @@ $ )
860
907
 
861
908
  This method requires a token obtained in a response to the [convert_video](#convert-a-video) method.
862
909
 
863
- ```console
864
- $ Uploadcare::ConversionApi.get_video_conversion_status(916090555)
910
+ ```ruby
911
+ Uploadcare::ConversionApi.get_video_conversion_status(916090555)
865
912
  # => Success({
866
913
  # :result=>{
867
914
  # :uuid=>"f0a3e66e-cd22-4397-ba0a-8a8becc925f9",
@@ -881,15 +928,15 @@ Metadata is key-value data.
881
928
 
882
929
  #### Get file's metadata keys and values
883
930
 
884
- ```console
885
- $ Uploadcare::FileMetadataApi.file_metadata('f757ea10-8b1a-4361-9a7c-56bfa5d45176')
931
+ ```ruby
932
+ Uploadcare::FileMetadataApi.file_metadata('f757ea10-8b1a-4361-9a7c-56bfa5d45176')
886
933
  # => {:"sample-key"=>"sample-value"}
887
934
  ```
888
935
 
889
936
  #### Get the value of a single metadata key
890
937
 
891
- ```console
892
- $ Uploadcare::FileMetadataApi.file_metadata_value('f757ea10-8b1a-4361-9a7c-56bfa5d45176', 'sample-key')
938
+ ```ruby
939
+ Uploadcare::FileMetadataApi.file_metadata_value('f757ea10-8b1a-4361-9a7c-56bfa5d45176', 'sample-key')
893
940
  # => "sample-value"
894
941
  ```
895
942
 
@@ -897,15 +944,15 @@ $ Uploadcare::FileMetadataApi.file_metadata_value('f757ea10-8b1a-4361-9a7c-56bfa
897
944
 
898
945
  If the key does not exist, it will be created.
899
946
 
900
- ```console
901
- $ Uploadcare::FileMetadataApi.update_file_metadata('f757ea10-8b1a-4361-9a7c-56bfa5d45176', 'sample-key', 'new-value')
947
+ ```ruby
948
+ Uploadcare::FileMetadataApi.update_file_metadata('f757ea10-8b1a-4361-9a7c-56bfa5d45176', 'sample-key', 'new-value')
902
949
  # => "new-value"
903
950
  ```
904
951
 
905
952
  #### Delete a file's metadata key
906
953
 
907
- ```console
908
- $ Uploadcare::FileMetadataApi.delete_file_metadata('f757ea10-8b1a-4361-9a7c-56bfa5d45176', 'sample-key')
954
+ ```ruby
955
+ Uploadcare::FileMetadataApi.delete_file_metadata('f757ea10-8b1a-4361-9a7c-56bfa5d45176', 'sample-key')
909
956
  # => "200 OK"
910
957
  ```
911
958
 
@@ -920,52 +967,71 @@ An Add-On is an application implemented by Uploadcare that accepts uploaded file
920
967
  Note: Detected labels are stored in the file's appdata.
921
968
  ```
922
969
 
923
- ```console
924
- $ Uploadcare::AddonsApi.rekognition_detect_labels('f757ea10-8b1a-4361-9a7c-56bfa5d45176')
970
+ ```ruby
971
+ Uploadcare::AddonsApi.rekognition_detect_labels('f757ea10-8b1a-4361-9a7c-56bfa5d45176')
925
972
  # => {"request_id"=>"dfeaf81c-5c0d-49d5-8ed4-ac09bac7998e"}
926
973
  ```
927
974
 
928
975
  #### Check the status of an Add-On execution request that had been started using the Execute Add-On operation
929
976
 
930
- ```console
931
- $ Uploadcare::AddonsApi.rekognition_detect_labels_status('dfeaf81c-5c0d-49d5-8ed4-ac09bac7998e')
977
+ ```ruby
978
+ Uploadcare::AddonsApi.rekognition_detect_labels_status('dfeaf81c-5c0d-49d5-8ed4-ac09bac7998e')
932
979
  # => {"status"=>"done"}
933
980
  ```
934
981
 
982
+ #### Execute AWS Rekognition Moderation Add-On for a given target to detect moderation labels in an image.
983
+ ```
984
+ Note: Detected labels are stored in the file's appdata.
985
+ ```
986
+
987
+ ```ruby
988
+ Uploadcare::AddonsApi.rekognition_detect_moderation_labels('f757ea10-8b1a-4361-9a7c-56bfa5d45176')
989
+ # => {"request_id"=>"dfeaf81c-5c0d-49d5-8ed4-ac09bac7998e"}
990
+ ```
991
+
992
+ # Check the status of an AWS Rekognition Moderation Add-On execution request that had been started using the Execute Add-On operation.
993
+
994
+ ```ruby
995
+ Uploadcare::AddonsApi.rekognition_detect_moderation_labels_status('dfeaf81c-5c0d-49d5-8ed4-ac09bac7998e')
996
+ # => {"status"=>"done"}
997
+ ```
998
+
999
+
1000
+
935
1001
  #### Execute ClamAV virus checking Add-On for a given target
936
1002
 
937
- ```console
938
- $ Uploadcare::AddonsApi.virus_scan('dfeaf81c-5c0d-49d5-8ed4-ac09bac7998e')
1003
+ ```ruby
1004
+ Uploadcare::AddonsApi.virus_scan('dfeaf81c-5c0d-49d5-8ed4-ac09bac7998e')
939
1005
  # => {"request_id"=>"1b0126de-ace6-455b-82e2-25f4aa33fc6f"}
940
1006
  ```
941
1007
 
942
1008
  #### Check the status of an Add-On execution request that had been started using the Execute Add-On operation
943
1009
 
944
- ```console
945
- $ Uploadcare::AddonsApi.virus_scan_status('1b0126de-ace6-455b-82e2-25f4aa33fc6f')
1010
+ ```ruby
1011
+ Uploadcare::AddonsApi.virus_scan_status('1b0126de-ace6-455b-82e2-25f4aa33fc6f')
946
1012
  # => {"status"=>"done"}
947
1013
  ```
948
1014
 
949
1015
  #### Execute remove.bg background image removal Add-On for a given target
950
1016
 
951
- ```console
952
- $ Uploadcare::AddonsApi.remove_bg('f757ea10-8b1a-4361-9a7c-56bfa5d45176')
1017
+ ```ruby
1018
+ Uploadcare::AddonsApi.remove_bg('f757ea10-8b1a-4361-9a7c-56bfa5d45176')
953
1019
  # => {"request_id"=>"6d26a7d5-0955-4aeb-a9b1-c9776c83aa4c"}
954
1020
  ```
955
1021
 
956
1022
  #### Check the status of an Add-On execution request that had been started using the Execute Add-On operation
957
1023
 
958
- ```console
959
- $ Uploadcare::AddonsApi.remove_bg_status('6d26a7d5-0955-4aeb-a9b1-c9776c83aa4c')
1024
+ ```ruby
1025
+ Uploadcare::AddonsApi.remove_bg_status('6d26a7d5-0955-4aeb-a9b1-c9776c83aa4c')
960
1026
  # => {"status"=>"done", "result"=>{"file_id"=>"8f0a2a28-3ed7-481e-b415-ee3cce982aaa"}}
961
1027
  ```
962
1028
 
963
1029
 
964
1030
  ## Useful links
965
- * [Uploadcare documentation](https://uploadcare.com/docs/?utm_source=github&utm_medium=referral&utm_campaign=uploadcare-rails)
966
- * [Upload API reference](https://uploadcare.com/api-refs/upload-api/?utm_source=github&utm_medium=referral&utm_campaign=uploadcare-rails)
967
- * [REST API reference](https://uploadcare.com/api-refs/rest-api/?utm_source=github&utm_medium=referral&utm_campaign=uploadcare-rails)
968
- * [Changelog](./CHANGELOG.md)
969
- * [Contributing guide](https://github.com/uploadcare/.github/blob/master/CONTRIBUTING.md)
970
- * [Security policy](https://github.com/uploadcare/uploadcare-rails/security/policy)
971
- * [Support](https://github.com/uploadcare/.github/blob/master/SUPPORT.md)
1031
+ * [Uploadcare documentation](https://uploadcare.com/docs/?utm_source=github&utm_medium=referral&utm_campaign=uploadcare-rails)
1032
+ * [Upload API reference](https://uploadcare.com/api-refs/upload-api/?utm_source=github&utm_medium=referral&utm_campaign=uploadcare-rails)
1033
+ * [REST API reference](https://uploadcare.com/api-refs/rest-api/?utm_source=github&utm_medium=referral&utm_campaign=uploadcare-rails)
1034
+ * [Changelog](./CHANGELOG.md)
1035
+ * [Contributing guide](https://github.com/uploadcare/.github/blob/master/CONTRIBUTING.md)
1036
+ * [Security policy](https://github.com/uploadcare/uploadcare-rails/security/policy)
1037
+ * [Support](https://github.com/uploadcare/.github/blob/master/SUPPORT.md)
@@ -13,7 +13,7 @@ module Uploadcare
13
13
  module MountUploadcareFileGroup
14
14
  extend ActiveSupport::Concern
15
15
 
16
- GROUP_ID_REGEX = /\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b~\d/.freeze
16
+ GROUP_ID_REGEX = /\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b~\d+/.freeze
17
17
 
18
18
  def build_uploadcare_file_group(attribute)
19
19
  cdn_url = attributes[attribute.to_s].to_s
@@ -44,6 +44,18 @@ module Uploadcare
44
44
  def remove_bg_status(uuid)
45
45
  Uploadcare::Addons.remove_bg_status(uuid)
46
46
  end
47
+
48
+ # Execute AWS Rekognition Moderation Add-On for a given target to detect labels in an image.
49
+ # @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Add-Ons/operation/awsRekognitionDetectModerationLabelsExecute
50
+ def rekognition_detect_moderation_labels(uuid)
51
+ Uploadcare::Addons.ws_rekognition_detect_moderation_labels(uuid)
52
+ end
53
+
54
+ # Check the status of an Add-On execution request that had been started using the Execute Add-On operation.
55
+ # @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Add-Ons/operation/awsRekognitionDetectModerationLabelsExecutionStatus
56
+ def rekognition_detect_moderation_labels_status(uuid)
57
+ Uploadcare::Addons.ws_rekognition_detect_moderation_labels_status(uuid)
58
+ end
47
59
  end
48
60
  end
49
61
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Uploadcare
4
4
  module Rails
5
- VERSION = '3.4.0'
5
+ VERSION = '3.4.2'
6
6
  end
7
7
  end
@@ -44,5 +44,5 @@ Gem::Specification.new do |gem|
44
44
 
45
45
  gem.version = Uploadcare::Rails::VERSION
46
46
  gem.add_dependency 'rails', '>= 6'
47
- gem.add_dependency 'uploadcare-ruby', '>= 4.3'
47
+ gem.add_dependency 'uploadcare-ruby', '>= 4.4.1'
48
48
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uploadcare-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "@dmitrijivanchenko (Dmitrij Ivanchenko), @T0mbery (Andrey Aksenov)"
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-03-05 00:00:00.000000000 Z
12
+ date: 2024-05-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '4.3'
34
+ version: 4.4.1
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '4.3'
41
+ version: 4.4.1
42
42
  description: |
43
43
  Rails API client (based on uploadcare-ruby) that handles uploads
44
44
  and further operations with files by wrapping Uploadcare Upload and REST APIs.
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  requirements: []
121
- rubygems_version: 3.5.3
121
+ rubygems_version: 3.5.4
122
122
  signing_key:
123
123
  specification_version: 4
124
124
  summary: Rails gem for Uploadcare