uploadcare-ruby 4.4.2 → 5.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/.env.example +7 -0
  3. data/.github/workflows/gem-push.yml +1 -1
  4. data/.github/workflows/ruby.yml +10 -13
  5. data/.gitignore +9 -0
  6. data/.rubocop.yml +95 -8
  7. data/CHANGELOG.md +78 -0
  8. data/Gemfile +23 -6
  9. data/MIGRATING_V5.md +290 -0
  10. data/README.md +422 -671
  11. data/Rakefile +5 -1
  12. data/api_examples/README.md +77 -0
  13. data/api_examples/rest_api/delete_files_storage.rb +3 -5
  14. data/api_examples/rest_api/delete_files_uuid_metadata_key.rb +3 -4
  15. data/api_examples/rest_api/delete_files_uuid_storage.rb +3 -4
  16. data/api_examples/rest_api/delete_groups_uuid.rb +3 -4
  17. data/api_examples/rest_api/delete_webhooks_unsubscribe.rb +3 -4
  18. data/api_examples/rest_api/get_addons_aws_rekognition_detect_labels_execute_status.rb +3 -6
  19. data/api_examples/rest_api/get_addons_aws_rekognition_detect_moderation_labels_execute_status.rb +3 -6
  20. data/api_examples/rest_api/get_addons_remove_bg_execute_status.rb +3 -6
  21. data/api_examples/rest_api/get_addons_uc_clamav_virus_scan_execute_status.rb +3 -6
  22. data/api_examples/rest_api/get_convert_document_status_token.rb +3 -5
  23. data/api_examples/rest_api/get_convert_document_uuid.rb +3 -5
  24. data/api_examples/rest_api/get_convert_video_status_token.rb +3 -5
  25. data/api_examples/rest_api/get_files.rb +3 -5
  26. data/api_examples/rest_api/get_files_uuid.rb +3 -5
  27. data/api_examples/rest_api/get_files_uuid_metadata.rb +3 -5
  28. data/api_examples/rest_api/get_files_uuid_metadata_key.rb +3 -5
  29. data/api_examples/rest_api/get_groups.rb +3 -5
  30. data/api_examples/rest_api/get_groups_uuid.rb +3 -5
  31. data/api_examples/rest_api/get_project.rb +3 -5
  32. data/api_examples/rest_api/get_webhooks.rb +3 -5
  33. data/api_examples/rest_api/post_addons_aws_rekognition_detect_labels_execute.rb +3 -5
  34. data/api_examples/rest_api/post_addons_aws_rekognition_detect_moderation_labels_execute.rb +3 -5
  35. data/api_examples/rest_api/post_addons_remove_bg_execute.rb +3 -5
  36. data/api_examples/rest_api/post_addons_uc_clamav_virus_scan_execute.rb +3 -5
  37. data/api_examples/rest_api/post_convert_document.rb +3 -6
  38. data/api_examples/rest_api/post_convert_video.rb +3 -10
  39. data/api_examples/rest_api/post_files_local_copy.rb +3 -6
  40. data/api_examples/rest_api/post_files_remote_copy.rb +3 -7
  41. data/api_examples/rest_api/post_webhooks.rb +3 -9
  42. data/api_examples/rest_api/put_files_storage.rb +3 -8
  43. data/api_examples/rest_api/put_files_uuid_metadata_key.rb +3 -7
  44. data/api_examples/rest_api/put_files_uuid_storage.rb +3 -5
  45. data/api_examples/rest_api/put_webhooks_id.rb +3 -11
  46. data/api_examples/support/example_helper.rb +250 -0
  47. data/api_examples/support/run_rest_example.rb +161 -0
  48. data/api_examples/support/run_upload_example.rb +88 -0
  49. data/api_examples/upload_api/get_from_url_status.rb +3 -5
  50. data/api_examples/upload_api/get_group_info.rb +3 -6
  51. data/api_examples/upload_api/get_info.rb +3 -6
  52. data/api_examples/upload_api/post_base.rb +3 -5
  53. data/api_examples/upload_api/post_from_url.rb +3 -5
  54. data/api_examples/upload_api/post_group.rb +3 -8
  55. data/api_examples/upload_api/post_multipart_complete.rb +3 -7
  56. data/api_examples/upload_api/post_multipart_start.rb +3 -7
  57. data/api_examples/upload_api/put_multipart_part.rb +4 -0
  58. data/bin/console +1 -1
  59. data/docs/release-notes-5.0.0.rc1.md +34 -0
  60. data/examples/README.md +39 -0
  61. data/examples/batch_upload.rb +54 -0
  62. data/examples/group_creation.rb +88 -0
  63. data/examples/large_file_upload.rb +88 -0
  64. data/examples/simple_upload.rb +39 -0
  65. data/examples/upload_with_progress.rb +84 -0
  66. data/examples/url_upload.rb +56 -0
  67. data/lib/uploadcare/api/rest/addons.rb +107 -0
  68. data/lib/uploadcare/api/rest/document_conversions.rb +65 -0
  69. data/lib/uploadcare/api/rest/file_metadata.rb +71 -0
  70. data/lib/uploadcare/api/rest/files.rb +112 -0
  71. data/lib/uploadcare/api/rest/groups.rb +49 -0
  72. data/lib/uploadcare/api/rest/project.rb +23 -0
  73. data/lib/uploadcare/api/rest/video_conversions.rb +52 -0
  74. data/lib/uploadcare/api/rest/webhooks.rb +74 -0
  75. data/lib/uploadcare/api/rest.rb +254 -0
  76. data/lib/uploadcare/api/upload/files.rb +313 -0
  77. data/lib/uploadcare/api/upload/groups.rb +72 -0
  78. data/lib/uploadcare/api/upload.rb +272 -0
  79. data/lib/uploadcare/client/addons_accessor.rb +85 -0
  80. data/lib/uploadcare/client/api.rb +33 -0
  81. data/lib/uploadcare/client/conversions_accessor.rb +33 -0
  82. data/lib/uploadcare/client/document_conversions_accessor.rb +41 -0
  83. data/lib/uploadcare/client/file_metadata_accessor.rb +46 -0
  84. data/lib/uploadcare/client/files_accessor.rb +82 -0
  85. data/lib/uploadcare/client/groups_accessor.rb +35 -0
  86. data/lib/uploadcare/client/project_accessor.rb +17 -0
  87. data/lib/uploadcare/client/video_conversions_accessor.rb +33 -0
  88. data/lib/uploadcare/client/webhooks_accessor.rb +42 -0
  89. data/lib/uploadcare/client.rb +127 -0
  90. data/lib/uploadcare/cname_generator.rb +68 -0
  91. data/lib/uploadcare/collections/batch_result.rb +35 -0
  92. data/lib/uploadcare/collections/paginated.rb +165 -0
  93. data/lib/uploadcare/configuration.rb +81 -0
  94. data/lib/uploadcare/exception/auth_error.rb +2 -6
  95. data/lib/uploadcare/exception/configuration_error.rb +4 -0
  96. data/lib/uploadcare/exception/conversion_error.rb +2 -6
  97. data/lib/uploadcare/exception/invalid_request_error.rb +4 -0
  98. data/lib/uploadcare/exception/multipart_upload_error.rb +4 -0
  99. data/lib/uploadcare/exception/not_found_error.rb +4 -0
  100. data/lib/uploadcare/exception/request_error.rb +2 -6
  101. data/lib/uploadcare/exception/retry_error.rb +2 -6
  102. data/lib/uploadcare/exception/throttle_error.rb +7 -11
  103. data/lib/uploadcare/exception/unknown_status_error.rb +4 -0
  104. data/lib/uploadcare/exception/upload_error.rb +4 -0
  105. data/lib/uploadcare/exception/upload_timeout_error.rb +4 -0
  106. data/lib/uploadcare/internal/authenticator.rb +101 -0
  107. data/lib/uploadcare/internal/error_handler.rb +102 -0
  108. data/lib/uploadcare/internal/signature_generator.rb +31 -0
  109. data/lib/uploadcare/internal/throttle_handler.rb +36 -0
  110. data/lib/uploadcare/internal/upload_io.rb +110 -0
  111. data/lib/uploadcare/internal/upload_params_generator.rb +86 -0
  112. data/lib/uploadcare/internal/user_agent.rb +22 -0
  113. data/lib/uploadcare/operations/multipart_upload.rb +213 -0
  114. data/lib/uploadcare/operations/upload_router.rb +162 -0
  115. data/lib/uploadcare/resources/addon_execution.rb +97 -0
  116. data/lib/uploadcare/resources/base_resource.rb +61 -0
  117. data/lib/uploadcare/resources/document_conversion.rb +81 -0
  118. data/lib/uploadcare/resources/file.rb +366 -0
  119. data/lib/uploadcare/resources/file_metadata.rb +135 -0
  120. data/lib/uploadcare/resources/group.rb +142 -0
  121. data/lib/uploadcare/resources/project.rb +26 -0
  122. data/lib/uploadcare/resources/video_conversion.rb +59 -0
  123. data/lib/uploadcare/resources/webhook.rb +85 -0
  124. data/lib/uploadcare/result.rb +85 -0
  125. data/lib/uploadcare/signed_url_generators/akamai_generator.rb +60 -56
  126. data/lib/uploadcare/signed_url_generators/base_generator.rb +15 -15
  127. data/lib/uploadcare/version.rb +7 -0
  128. data/lib/uploadcare/webhook_signature_verifier.rb +60 -0
  129. data/lib/uploadcare.rb +84 -50
  130. data/mise.toml +2 -0
  131. data/uploadcare-ruby.gemspec +8 -7
  132. metadata +102 -74
  133. data/api_examples/upload_api/put_presigned_url_x.rb +0 -8
  134. data/lib/uploadcare/api/api.rb +0 -25
  135. data/lib/uploadcare/client/addons_client.rb +0 -69
  136. data/lib/uploadcare/client/conversion/base_conversion_client.rb +0 -59
  137. data/lib/uploadcare/client/conversion/document_conversion_client.rb +0 -45
  138. data/lib/uploadcare/client/conversion/video_conversion_client.rb +0 -46
  139. data/lib/uploadcare/client/file_client.rb +0 -48
  140. data/lib/uploadcare/client/file_list_client.rb +0 -46
  141. data/lib/uploadcare/client/file_metadata_client.rb +0 -36
  142. data/lib/uploadcare/client/group_client.rb +0 -45
  143. data/lib/uploadcare/client/multipart_upload/chunks_client.rb +0 -58
  144. data/lib/uploadcare/client/multipart_upload_client.rb +0 -64
  145. data/lib/uploadcare/client/project_client.rb +0 -20
  146. data/lib/uploadcare/client/rest_client.rb +0 -77
  147. data/lib/uploadcare/client/rest_group_client.rb +0 -43
  148. data/lib/uploadcare/client/upload_client.rb +0 -46
  149. data/lib/uploadcare/client/uploader_client.rb +0 -128
  150. data/lib/uploadcare/client/webhook_client.rb +0 -49
  151. data/lib/uploadcare/concern/error_handler.rb +0 -54
  152. data/lib/uploadcare/concern/throttle_handler.rb +0 -25
  153. data/lib/uploadcare/concern/upload_error_handler.rb +0 -32
  154. data/lib/uploadcare/entity/addons.rb +0 -14
  155. data/lib/uploadcare/entity/conversion/base_converter.rb +0 -43
  156. data/lib/uploadcare/entity/conversion/document_converter.rb +0 -15
  157. data/lib/uploadcare/entity/conversion/video_converter.rb +0 -15
  158. data/lib/uploadcare/entity/decorator/paginator.rb +0 -79
  159. data/lib/uploadcare/entity/entity.rb +0 -18
  160. data/lib/uploadcare/entity/file.rb +0 -103
  161. data/lib/uploadcare/entity/file_list.rb +0 -32
  162. data/lib/uploadcare/entity/file_metadata.rb +0 -30
  163. data/lib/uploadcare/entity/group.rb +0 -49
  164. data/lib/uploadcare/entity/group_list.rb +0 -24
  165. data/lib/uploadcare/entity/project.rb +0 -13
  166. data/lib/uploadcare/entity/uploader.rb +0 -93
  167. data/lib/uploadcare/entity/webhook.rb +0 -14
  168. data/lib/uploadcare/param/authentication_header.rb +0 -37
  169. data/lib/uploadcare/param/conversion/document/processing_job_url_builder.rb +0 -39
  170. data/lib/uploadcare/param/conversion/video/processing_job_url_builder.rb +0 -64
  171. data/lib/uploadcare/param/param.rb +0 -10
  172. data/lib/uploadcare/param/secure_auth_header.rb +0 -51
  173. data/lib/uploadcare/param/simple_auth_header.rb +0 -14
  174. data/lib/uploadcare/param/upload/signature_generator.rb +0 -24
  175. data/lib/uploadcare/param/upload/upload_params_generator.rb +0 -41
  176. data/lib/uploadcare/param/user_agent.rb +0 -21
  177. data/lib/uploadcare/param/webhook_signature_verifier.rb +0 -23
  178. data/lib/uploadcare/ruby/version.rb +0 -5
data/lib/uploadcare.rb CHANGED
@@ -1,54 +1,88 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Gem version
4
- require 'ruby/version'
5
-
6
- # Exceptions
7
- require 'exception/throttle_error'
8
- require 'exception/request_error'
9
- require 'exception/retry_error'
10
- require 'exception/auth_error'
11
-
12
- # Entities
13
- require 'entity/entity'
14
- require 'entity/file'
15
- require 'entity/file_list'
16
- require 'entity/group'
17
- require 'entity/group_list'
18
- require 'entity/project'
19
- require 'entity/uploader'
20
- require 'entity/webhook'
21
-
22
- # Param
23
- require 'param/webhook_signature_verifier'
24
-
25
- # General api
26
- require 'api/api'
27
-
28
- # SignedUrlGenerators
29
- require 'signed_url_generators/akamai_generator'
30
- require 'signed_url_generators/base_generator'
31
-
32
- # Ruby wrapper for Uploadcare API
33
- #
34
- # @see https://uploadcare.com/docs/api_reference
3
+ require 'zeitwerk'
4
+ require 'faraday'
5
+
35
6
  module Uploadcare
36
- extend Dry::Configurable
37
-
38
- setting :public_key, default: ENV.fetch('UPLOADCARE_PUBLIC_KEY', '')
39
- setting :secret_key, default: ENV.fetch('UPLOADCARE_SECRET_KEY', '')
40
- setting :auth_type, default: 'Uploadcare'
41
- setting :multipart_size_threshold, default: 100 * 1024 * 1024
42
- setting :rest_api_root, default: 'https://api.uploadcare.com'
43
- setting :upload_api_root, default: 'https://upload.uploadcare.com'
44
- setting :max_request_tries, default: 100
45
- setting :base_request_sleep, default: 1 # seconds
46
- setting :max_request_sleep, default: 60.0 # seconds
47
- setting :sign_uploads, default: false
48
- setting :upload_signature_lifetime, default: 30 * 60 # seconds
49
- setting :max_throttle_attempts, default: 5
50
- setting :upload_threads, default: 2 # used for multiupload only ATM
51
- setting :framework_data, default: ''
52
- setting :file_chunk_size, default: 100
53
- setting :logger, default: Logger.new($stdout)
7
+ @loader = Zeitwerk::Loader.for_gem
8
+
9
+ @loader.setup
10
+
11
+ require_relative 'uploadcare/cname_generator'
12
+
13
+ class << self
14
+ # Configure the global Uploadcare instance.
15
+ #
16
+ # @yield [config] Configuration block
17
+ # @yieldparam config [Uploadcare::Configuration] The configuration object
18
+ def configure
19
+ yield configuration if block_given?
20
+ ensure
21
+ @client = nil
22
+ end
23
+
24
+ # Access the global configuration.
25
+ #
26
+ # @return [Uploadcare::Configuration]
27
+ def configuration
28
+ @configuration ||= Configuration.new
29
+ end
30
+
31
+ # Access a global client instance, or create one with overrides.
32
+ #
33
+ # @param config [Uploadcare::Configuration, nil] Custom configuration
34
+ # @param options [Hash] Configuration overrides
35
+ # @return [Uploadcare::Client]
36
+ def client(config: nil, **options)
37
+ if options.empty? && (config.nil? || config.equal?(configuration))
38
+ return (@client ||= Client.new(config: configuration))
39
+ end
40
+
41
+ Client.new(config: config || configuration, **options)
42
+ end
43
+
44
+ # @return [Uploadcare::Client::FilesAccessor]
45
+ def files
46
+ client.files
47
+ end
48
+
49
+ # @return [Uploadcare::Client::GroupsAccessor]
50
+ def groups
51
+ client.groups
52
+ end
53
+
54
+ # @return [Uploadcare::Operations::UploadRouter]
55
+ def uploads
56
+ client.uploads
57
+ end
58
+
59
+ # @return [Uploadcare::Client::ProjectAccessor]
60
+ def project
61
+ client.project
62
+ end
63
+
64
+ # Eager-load the gem namespace through Zeitwerk.
65
+ #
66
+ # @return [void]
67
+ def eager_load!
68
+ @loader.eager_load
69
+ end
70
+ end
71
+
72
+ # Top-level aliases for the public resource classes.
73
+ File = Resources::File
74
+ # Alias for the group resource.
75
+ Group = Resources::Group
76
+ # Alias for the project resource.
77
+ Project = Resources::Project
78
+ # Alias for the webhook resource.
79
+ Webhook = Resources::Webhook
80
+ # Alias for the file metadata resource.
81
+ FileMetadata = Resources::FileMetadata
82
+ # Alias for the add-on execution resource.
83
+ AddonExecution = Resources::AddonExecution
84
+ # Alias for the document conversion resource.
85
+ DocumentConversion = Resources::DocumentConversion
86
+ # Alias for the video conversion resource.
87
+ VideoConversion = Resources::VideoConversion
54
88
  end
data/mise.toml ADDED
@@ -0,0 +1,2 @@
1
+ [tools]
2
+ ruby = "4.0.1"
@@ -2,7 +2,7 @@
2
2
 
3
3
  lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'uploadcare/ruby/version'
5
+ require 'uploadcare/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'uploadcare-ruby'
@@ -41,12 +41,13 @@ Gem::Specification.new do |spec|
41
41
  end
42
42
  spec.bindir = 'exe'
43
43
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
44
- spec.require_paths = ['lib', 'lib/uploadcare', 'lib/uploadcare/rest']
44
+ spec.require_paths = ['lib']
45
45
 
46
- spec.required_ruby_version = '>= 3.0'
46
+ spec.required_ruby_version = '>= 3.3' # Compatible with Ruby 3.3+ and Ruby 4.0+
47
47
 
48
- spec.add_dependency 'mimemagic', '~> 0.4'
49
- spec.add_dependency 'parallel', '~> 1.22'
50
- spec.add_dependency 'retries', '~> 0.0'
51
- spec.add_dependency 'uploadcare-api_struct', '>= 1.1', '< 2'
48
+ spec.add_dependency 'addressable', '~> 2.8'
49
+ spec.add_dependency 'faraday', '~> 2.14'
50
+ spec.add_dependency 'faraday-multipart', '~> 1.0'
51
+ spec.add_dependency 'mime-types', '~> 3.7'
52
+ spec.add_dependency 'zeitwerk', '~> 2.7'
52
53
  end
metadata CHANGED
@@ -1,78 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uploadcare-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.2
4
+ version: 5.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "@dmitrijivanchenko (Dmitrij Ivanchenko), @T0mbery (Andrey Aksenov)"
8
8
  - kraft001 (Konstantin Rafalskii)
9
- autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2024-05-29 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: mimemagic
14
+ name: addressable
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - "~>"
19
18
  - !ruby/object:Gem::Version
20
- version: '0.4'
19
+ version: '2.8'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - "~>"
26
25
  - !ruby/object:Gem::Version
27
- version: '0.4'
26
+ version: '2.8'
28
27
  - !ruby/object:Gem::Dependency
29
- name: parallel
28
+ name: faraday
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
31
  - - "~>"
33
32
  - !ruby/object:Gem::Version
34
- version: '1.22'
33
+ version: '2.14'
35
34
  type: :runtime
36
35
  prerelease: false
37
36
  version_requirements: !ruby/object:Gem::Requirement
38
37
  requirements:
39
38
  - - "~>"
40
39
  - !ruby/object:Gem::Version
41
- version: '1.22'
40
+ version: '2.14'
42
41
  - !ruby/object:Gem::Dependency
43
- name: retries
42
+ name: faraday-multipart
44
43
  requirement: !ruby/object:Gem::Requirement
45
44
  requirements:
46
45
  - - "~>"
47
46
  - !ruby/object:Gem::Version
48
- version: '0.0'
47
+ version: '1.0'
49
48
  type: :runtime
50
49
  prerelease: false
51
50
  version_requirements: !ruby/object:Gem::Requirement
52
51
  requirements:
53
52
  - - "~>"
54
53
  - !ruby/object:Gem::Version
55
- version: '0.0'
54
+ version: '1.0'
56
55
  - !ruby/object:Gem::Dependency
57
- name: uploadcare-api_struct
56
+ name: mime-types
58
57
  requirement: !ruby/object:Gem::Requirement
59
58
  requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: '1.1'
63
- - - "<"
59
+ - - "~>"
64
60
  - !ruby/object:Gem::Version
65
- version: '2'
61
+ version: '3.7'
66
62
  type: :runtime
67
63
  prerelease: false
68
64
  version_requirements: !ruby/object:Gem::Requirement
69
65
  requirements:
70
- - - ">="
66
+ - - "~>"
71
67
  - !ruby/object:Gem::Version
72
- version: '1.1'
73
- - - "<"
68
+ version: '3.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: zeitwerk
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.7'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
74
81
  - !ruby/object:Gem::Version
75
- version: '2'
82
+ version: '2.7'
76
83
  description: Ruby API client that handles uploads and further operations with files
77
84
  by wrapping Uploadcare Upload and REST APIs.
78
85
  email:
@@ -81,6 +88,7 @@ executables: []
81
88
  extensions: []
82
89
  extra_rdoc_files: []
83
90
  files:
91
+ - ".env.example"
84
92
  - ".github/workflows/gem-push.yml"
85
93
  - ".github/workflows/ruby.yml"
86
94
  - ".gitignore"
@@ -91,8 +99,10 @@ files:
91
99
  - DEVELOPMENT.md
92
100
  - Gemfile
93
101
  - LICENSE
102
+ - MIGRATING_V5.md
94
103
  - README.md
95
104
  - Rakefile
105
+ - api_examples/README.md
96
106
  - api_examples/rest_api/delete_files_storage.rb
97
107
  - api_examples/rest_api/delete_files_uuid_metadata_key.rb
98
108
  - api_examples/rest_api/delete_files_uuid_storage.rb
@@ -126,6 +136,9 @@ files:
126
136
  - api_examples/rest_api/put_files_uuid_metadata_key.rb
127
137
  - api_examples/rest_api/put_files_uuid_storage.rb
128
138
  - api_examples/rest_api/put_webhooks_id.rb
139
+ - api_examples/support/example_helper.rb
140
+ - api_examples/support/run_rest_example.rb
141
+ - api_examples/support/run_upload_example.rb
129
142
  - api_examples/upload_api/get_from_url_status.rb
130
143
  - api_examples/upload_api/get_group_info.rb
131
144
  - api_examples/upload_api/get_info.rb
@@ -134,62 +147,81 @@ files:
134
147
  - api_examples/upload_api/post_group.rb
135
148
  - api_examples/upload_api/post_multipart_complete.rb
136
149
  - api_examples/upload_api/post_multipart_start.rb
137
- - api_examples/upload_api/put_presigned_url_x.rb
150
+ - api_examples/upload_api/put_multipart_part.rb
138
151
  - bin/console
139
152
  - bin/setup
153
+ - docs/release-notes-5.0.0.rc1.md
154
+ - examples/README.md
155
+ - examples/batch_upload.rb
156
+ - examples/group_creation.rb
157
+ - examples/large_file_upload.rb
158
+ - examples/simple_upload.rb
159
+ - examples/upload_with_progress.rb
160
+ - examples/url_upload.rb
140
161
  - lib/uploadcare.rb
141
- - lib/uploadcare/api/api.rb
142
- - lib/uploadcare/client/addons_client.rb
143
- - lib/uploadcare/client/conversion/base_conversion_client.rb
144
- - lib/uploadcare/client/conversion/document_conversion_client.rb
145
- - lib/uploadcare/client/conversion/video_conversion_client.rb
146
- - lib/uploadcare/client/file_client.rb
147
- - lib/uploadcare/client/file_list_client.rb
148
- - lib/uploadcare/client/file_metadata_client.rb
149
- - lib/uploadcare/client/group_client.rb
150
- - lib/uploadcare/client/multipart_upload/chunks_client.rb
151
- - lib/uploadcare/client/multipart_upload_client.rb
152
- - lib/uploadcare/client/project_client.rb
153
- - lib/uploadcare/client/rest_client.rb
154
- - lib/uploadcare/client/rest_group_client.rb
155
- - lib/uploadcare/client/upload_client.rb
156
- - lib/uploadcare/client/uploader_client.rb
157
- - lib/uploadcare/client/webhook_client.rb
158
- - lib/uploadcare/concern/error_handler.rb
159
- - lib/uploadcare/concern/throttle_handler.rb
160
- - lib/uploadcare/concern/upload_error_handler.rb
161
- - lib/uploadcare/entity/addons.rb
162
- - lib/uploadcare/entity/conversion/base_converter.rb
163
- - lib/uploadcare/entity/conversion/document_converter.rb
164
- - lib/uploadcare/entity/conversion/video_converter.rb
165
- - lib/uploadcare/entity/decorator/paginator.rb
166
- - lib/uploadcare/entity/entity.rb
167
- - lib/uploadcare/entity/file.rb
168
- - lib/uploadcare/entity/file_list.rb
169
- - lib/uploadcare/entity/file_metadata.rb
170
- - lib/uploadcare/entity/group.rb
171
- - lib/uploadcare/entity/group_list.rb
172
- - lib/uploadcare/entity/project.rb
173
- - lib/uploadcare/entity/uploader.rb
174
- - lib/uploadcare/entity/webhook.rb
162
+ - lib/uploadcare/api/rest.rb
163
+ - lib/uploadcare/api/rest/addons.rb
164
+ - lib/uploadcare/api/rest/document_conversions.rb
165
+ - lib/uploadcare/api/rest/file_metadata.rb
166
+ - lib/uploadcare/api/rest/files.rb
167
+ - lib/uploadcare/api/rest/groups.rb
168
+ - lib/uploadcare/api/rest/project.rb
169
+ - lib/uploadcare/api/rest/video_conversions.rb
170
+ - lib/uploadcare/api/rest/webhooks.rb
171
+ - lib/uploadcare/api/upload.rb
172
+ - lib/uploadcare/api/upload/files.rb
173
+ - lib/uploadcare/api/upload/groups.rb
174
+ - lib/uploadcare/client.rb
175
+ - lib/uploadcare/client/addons_accessor.rb
176
+ - lib/uploadcare/client/api.rb
177
+ - lib/uploadcare/client/conversions_accessor.rb
178
+ - lib/uploadcare/client/document_conversions_accessor.rb
179
+ - lib/uploadcare/client/file_metadata_accessor.rb
180
+ - lib/uploadcare/client/files_accessor.rb
181
+ - lib/uploadcare/client/groups_accessor.rb
182
+ - lib/uploadcare/client/project_accessor.rb
183
+ - lib/uploadcare/client/video_conversions_accessor.rb
184
+ - lib/uploadcare/client/webhooks_accessor.rb
185
+ - lib/uploadcare/cname_generator.rb
186
+ - lib/uploadcare/collections/batch_result.rb
187
+ - lib/uploadcare/collections/paginated.rb
188
+ - lib/uploadcare/configuration.rb
175
189
  - lib/uploadcare/exception/auth_error.rb
190
+ - lib/uploadcare/exception/configuration_error.rb
176
191
  - lib/uploadcare/exception/conversion_error.rb
192
+ - lib/uploadcare/exception/invalid_request_error.rb
193
+ - lib/uploadcare/exception/multipart_upload_error.rb
194
+ - lib/uploadcare/exception/not_found_error.rb
177
195
  - lib/uploadcare/exception/request_error.rb
178
196
  - lib/uploadcare/exception/retry_error.rb
179
197
  - lib/uploadcare/exception/throttle_error.rb
180
- - lib/uploadcare/param/authentication_header.rb
181
- - lib/uploadcare/param/conversion/document/processing_job_url_builder.rb
182
- - lib/uploadcare/param/conversion/video/processing_job_url_builder.rb
183
- - lib/uploadcare/param/param.rb
184
- - lib/uploadcare/param/secure_auth_header.rb
185
- - lib/uploadcare/param/simple_auth_header.rb
186
- - lib/uploadcare/param/upload/signature_generator.rb
187
- - lib/uploadcare/param/upload/upload_params_generator.rb
188
- - lib/uploadcare/param/user_agent.rb
189
- - lib/uploadcare/param/webhook_signature_verifier.rb
190
- - lib/uploadcare/ruby/version.rb
198
+ - lib/uploadcare/exception/unknown_status_error.rb
199
+ - lib/uploadcare/exception/upload_error.rb
200
+ - lib/uploadcare/exception/upload_timeout_error.rb
201
+ - lib/uploadcare/internal/authenticator.rb
202
+ - lib/uploadcare/internal/error_handler.rb
203
+ - lib/uploadcare/internal/signature_generator.rb
204
+ - lib/uploadcare/internal/throttle_handler.rb
205
+ - lib/uploadcare/internal/upload_io.rb
206
+ - lib/uploadcare/internal/upload_params_generator.rb
207
+ - lib/uploadcare/internal/user_agent.rb
208
+ - lib/uploadcare/operations/multipart_upload.rb
209
+ - lib/uploadcare/operations/upload_router.rb
210
+ - lib/uploadcare/resources/addon_execution.rb
211
+ - lib/uploadcare/resources/base_resource.rb
212
+ - lib/uploadcare/resources/document_conversion.rb
213
+ - lib/uploadcare/resources/file.rb
214
+ - lib/uploadcare/resources/file_metadata.rb
215
+ - lib/uploadcare/resources/group.rb
216
+ - lib/uploadcare/resources/project.rb
217
+ - lib/uploadcare/resources/video_conversion.rb
218
+ - lib/uploadcare/resources/webhook.rb
219
+ - lib/uploadcare/result.rb
191
220
  - lib/uploadcare/signed_url_generators/akamai_generator.rb
192
221
  - lib/uploadcare/signed_url_generators/base_generator.rb
222
+ - lib/uploadcare/version.rb
223
+ - lib/uploadcare/webhook_signature_verifier.rb
224
+ - mise.toml
193
225
  - uploadcare-ruby.gemspec
194
226
  homepage: https://uploadcare.com/
195
227
  licenses:
@@ -202,25 +234,21 @@ metadata:
202
234
  bug_tracker_uri: https://github.com/uploadcare/uploadcare-ruby/issues
203
235
  documentation_uri: https://www.rubydoc.info/gems/uploadcare-ruby/
204
236
  rubygems_mfa_required: 'true'
205
- post_install_message:
206
237
  rdoc_options: []
207
238
  require_paths:
208
239
  - lib
209
- - lib/uploadcare
210
- - lib/uploadcare/rest
211
240
  required_ruby_version: !ruby/object:Gem::Requirement
212
241
  requirements:
213
242
  - - ">="
214
243
  - !ruby/object:Gem::Version
215
- version: '3.0'
244
+ version: '3.3'
216
245
  required_rubygems_version: !ruby/object:Gem::Requirement
217
246
  requirements:
218
247
  - - ">="
219
248
  - !ruby/object:Gem::Version
220
249
  version: '0'
221
250
  requirements: []
222
- rubygems_version: 3.5.9
223
- signing_key:
251
+ rubygems_version: 3.6.9
224
252
  specification_version: 4
225
253
  summary: Ruby wrapper for uploadcare API
226
254
  test_files: []
@@ -1,8 +0,0 @@
1
- # Uploadcare lib provides high level API for multipart uploads that does everything for you
2
-
3
- require 'uploadcare'
4
- Uploadcare.config.public_key = 'YOUR_PUBLIC_KEY'
5
- Uploadcare.config.secret_key = 'YOUR_SECRET_KEY'
6
-
7
- source_file = File.open('image.png')
8
- Uploadcare::Uploader.upload(source_file, store: 'auto')
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Gem.find_files('client/**/*.rb').each { |path| require path }
4
- Gem.find_files('entity/**/*.rb').each { |path| require path }
5
-
6
- module Uploadcare
7
- # End-user interface
8
- #
9
- # It delegates methods to other classes:
10
- # * To class methods of Entity objects
11
- # * To instance methods of Client objects
12
- # @see Uploadcare::Entity
13
- # @see Uploadcare::Client
14
- class Api
15
- extend Forwardable
16
- include Entity
17
-
18
- def_delegator File, :file
19
- def_delegators FileList, :file_list, :store_files, :delete_files
20
- def_delegators Group, :group
21
- def_delegators Project, :project
22
- def_delegators Uploader, :upload, :upload_files, :upload_url
23
- def_delegators Webhook, :create_webhook, :list_webhooks, :delete_webhook, :update_webhook
24
- end
25
- end
@@ -1,69 +0,0 @@
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
- # Execute AWS Rekognition Moderation Add-On for a given target to detect labels in an image.
50
- # @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Add-Ons/operation/awsRekognitionDetectModerationLabelsExecute
51
- def ws_rekognition_detect_moderation_labels(uuid)
52
- content = { target: uuid }.to_json
53
- post(uri: '/addons/aws_rekognition_detect_moderation_labels/execute/', content: content)
54
- end
55
-
56
- # Check the status of an Add-On execution request that had been started using the Execute Add-On operation.
57
- # @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Add-Ons/operation/awsRekognitionDetectModerationLabelsExecutionStatus
58
- def ws_rekognition_detect_moderation_labels_status(uuid)
59
- get(uri: "/addons/aws_rekognition_detect_moderation_labels/execute/status/#{query_params(uuid)}")
60
- end
61
-
62
- private
63
-
64
- def query_params(uuid)
65
- "?#{URI.encode_www_form(request_id: uuid)}"
66
- end
67
- end
68
- end
69
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../rest_client'
4
- require 'exception/conversion_error'
5
-
6
- module Uploadcare
7
- module Client
8
- module Conversion
9
- # This is a base client for conversion operations
10
- #
11
- # @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#tag/Conversion
12
- class BaseConversionClient < RestClient
13
- API_VERSION_HEADER_VALUE = 'application/vnd.uploadcare-v0.7+json'
14
-
15
- def headers
16
- {
17
- 'Content-Type': 'application/json',
18
- Accept: API_VERSION_HEADER_VALUE,
19
- 'User-Agent': Uploadcare::Param::UserAgent.call
20
- }
21
- end
22
-
23
- private
24
-
25
- def send_convert_request(arr, options, url_builder_class)
26
- body = build_body_for_many(arr, options, url_builder_class)
27
- post(uri: convert_uri, content: body)
28
- end
29
-
30
- def success(response)
31
- body = response.body.to_s
32
- extract_result(body)
33
- end
34
-
35
- def extract_result(response_body)
36
- return if response_body.empty?
37
-
38
- parsed_body = JSON.parse(response_body, symbolize_names: true)
39
- errors = parsed_body[:error] || parsed_body[:problems]
40
- return Dry::Monads::Result::Failure.call(errors) unless errors.nil? || errors.empty?
41
-
42
- Dry::Monads::Result::Success.call(parsed_body)
43
- end
44
-
45
- # Prepares body for convert_many method
46
- def build_body_for_many(arr, options, url_builder_class)
47
- {
48
- paths: arr.map do |params|
49
- url_builder_class.call(
50
- **build_paths_body(params)
51
- )
52
- end,
53
- store: options[:store]
54
- }.compact.to_json
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'client/conversion/base_conversion_client'
4
- require 'param/conversion/document/processing_job_url_builder'
5
-
6
- module Uploadcare
7
- module Client
8
- module Conversion
9
- # This is client for document conversion
10
- #
11
- # @see https://uploadcare.com/api-refs/rest-api/v0.7.0/#operation/documentConvert
12
- class DocumentConversionClient < BaseConversionClient
13
- def convert_many(
14
- arr,
15
- options = {},
16
- url_builder_class = Param::Conversion::Document::ProcessingJobUrlBuilder
17
- )
18
- send_convert_request(arr, options, url_builder_class)
19
- end
20
-
21
- def get_conversion_status(token)
22
- get(uri: "/convert/document/status/#{token}/")
23
- end
24
-
25
- def document_info(uuid)
26
- get(uri: "/convert/document/#{uuid}/")
27
- end
28
-
29
- private
30
-
31
- def convert_uri
32
- '/convert/document/'
33
- end
34
-
35
- def build_paths_body(params)
36
- {
37
- uuid: params[:uuid],
38
- format: params[:format],
39
- page: params[:page]
40
- }.compact
41
- end
42
- end
43
- end
44
- end
45
- end