Class: Uploadcare::Api::Rest
- Inherits:
-
Object
- Object
- Uploadcare::Api::Rest
- Includes:
- Internal::ErrorHandler, Internal::ThrottleHandler
- Defined in:
- lib/uploadcare/api/rest.rb
Overview
Base client for the Uploadcare REST API.
Provides authenticated HTTP methods (GET, POST, PUT, PATCH, DELETE) for all REST API endpoints. Includes automatic error handling and throttle retry logic.
Endpoint classes are accessed via lazy-loaded accessors: rest = Uploadcare::Api::Rest.new(config: config) rest.files.list rest.groups.info(uuid: "...")
Constant Summary collapse
- HTTP_GET =
Verb name used when deciding whether params belong in the query string.
'GET'
Instance Attribute Summary collapse
- #authenticator ⇒ Uploadcare::Internal::Authenticator readonly
- #config ⇒ Uploadcare::Configuration readonly
- #connection ⇒ Faraday::Connection readonly
Instance Method Summary collapse
-
#addons ⇒ Uploadcare::Api::Rest::Addons
Add-on operations endpoint.
-
#delete(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a DELETE request wrapped in a Result.
-
#document_conversions ⇒ Uploadcare::Api::Rest::DocumentConversions
Document conversion endpoint.
-
#file_metadata ⇒ Uploadcare::Api::Rest::FileMetadata
File metadata operations endpoint.
-
#file_tags ⇒ Uploadcare::Api::Rest::FileTags
Per-file tag operations endpoint.
-
#files ⇒ Uploadcare::Api::Rest::Files
File operations endpoint.
-
#get(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a GET request wrapped in a Result.
-
#groups ⇒ Uploadcare::Api::Rest::Groups
Group operations endpoint.
-
#initialize(config: Uploadcare.configuration) ⇒ Rest
constructor
Initialize a new REST API client.
-
#make_request(method:, path:, params: {}, query: {}, headers: {}, request_options: {}) ⇒ Hash, ...
Make an HTTP request to the REST API.
-
#patch(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a PATCH request wrapped in a Result.
-
#post(path:, params: {}, query: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a POST request wrapped in a Result.
-
#project ⇒ Uploadcare::Api::Rest::Project
Project information endpoint.
-
#put(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a PUT request wrapped in a Result.
-
#request(method:, path:, params: {}, query: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Wraps a request in a Result object.
-
#video_conversions ⇒ Uploadcare::Api::Rest::VideoConversions
Video conversion endpoint.
-
#webhooks ⇒ Uploadcare::Api::Rest::Webhooks
Webhook operations endpoint.
Constructor Details
#initialize(config: Uploadcare.configuration) ⇒ Rest
Initialize a new REST API client.
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/uploadcare/api/rest.rb', line 36 def initialize(config: Uploadcare.configuration) @config = config @memo_mutex = Mutex.new @connection = Faraday.new(url: config.rest_api_root) do |conn| conn.request :json conn.response :json, content_type: /\bjson$/ conn.response :raise_error end @authenticator = Uploadcare::Internal::Authenticator.new(config: config) end |
Instance Attribute Details
#authenticator ⇒ Uploadcare::Internal::Authenticator (readonly)
31 32 33 |
# File 'lib/uploadcare/api/rest.rb', line 31 def authenticator @authenticator end |
#config ⇒ Uploadcare::Configuration (readonly)
25 26 27 |
# File 'lib/uploadcare/api/rest.rb', line 25 def config @config end |
#connection ⇒ Faraday::Connection (readonly)
28 29 30 |
# File 'lib/uploadcare/api/rest.rb', line 28 def connection @connection end |
Instance Method Details
#addons ⇒ Uploadcare::Api::Rest::Addons
Returns Add-on operations endpoint.
80 81 82 |
# File 'lib/uploadcare/api/rest.rb', line 80 def addons memoized(:@addons) { Uploadcare::Api::Rest::Addons.new(rest: self) } end |
#delete(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a DELETE request wrapped in a Result.
171 172 173 |
# File 'lib/uploadcare/api/rest.rb', line 171 def delete(path:, params: {}, headers: {}, request_options: {}) request(method: :delete, path: path, params: params, headers: headers, request_options: ) end |
#document_conversions ⇒ Uploadcare::Api::Rest::DocumentConversions
Returns Document conversion endpoint.
85 86 87 |
# File 'lib/uploadcare/api/rest.rb', line 85 def document_conversions memoized(:@document_conversions) { Uploadcare::Api::Rest::DocumentConversions.new(rest: self) } end |
#file_metadata ⇒ Uploadcare::Api::Rest::FileMetadata
Returns File metadata operations endpoint.
70 71 72 |
# File 'lib/uploadcare/api/rest.rb', line 70 def memoized(:@file_metadata) { Uploadcare::Api::Rest::FileMetadata.new(rest: self) } end |
#file_tags ⇒ Uploadcare::Api::Rest::FileTags
Returns Per-file tag operations endpoint.
75 76 77 |
# File 'lib/uploadcare/api/rest.rb', line 75 def memoized(:@file_tags) { Uploadcare::Api::Rest::FileTags.new(rest: self) } end |
#files ⇒ Uploadcare::Api::Rest::Files
Returns File operations endpoint.
50 51 52 |
# File 'lib/uploadcare/api/rest.rb', line 50 def files memoized(:@files) { Uploadcare::Api::Rest::Files.new(rest: self) } end |
#get(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a GET request wrapped in a Result.
138 139 140 |
# File 'lib/uploadcare/api/rest.rb', line 138 def get(path:, params: {}, headers: {}, request_options: {}) request(method: :get, path: path, params: params, headers: headers, request_options: ) end |
#groups ⇒ Uploadcare::Api::Rest::Groups
Returns Group operations endpoint.
55 56 57 |
# File 'lib/uploadcare/api/rest.rb', line 55 def groups memoized(:@groups) { Uploadcare::Api::Rest::Groups.new(rest: self) } end |
#make_request(method:, path:, params: {}, query: {}, headers: {}, request_options: {}) ⇒ Hash, ...
Make an HTTP request to the REST API.
106 107 108 109 110 111 112 113 114 115 |
# File 'lib/uploadcare/api/rest.rb', line 106 def make_request(method:, path:, params: {}, query: {}, headers: {}, request_options: {}) handle_throttling(max_attempts: [:max_throttle_attempts]) do response = connection.public_send(method, path) do |req| prepare_request(req, method, path, params, query, headers, ) end response.body end rescue Faraday::Error => e handle_error(e) end |
#patch(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a PATCH request wrapped in a Result.
160 161 162 |
# File 'lib/uploadcare/api/rest.rb', line 160 def patch(path:, params: {}, headers: {}, request_options: {}) request(method: :patch, path: path, params: params, headers: headers, request_options: ) end |
#post(path:, params: {}, query: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a POST request wrapped in a Result.
125 126 127 128 129 |
# File 'lib/uploadcare/api/rest.rb', line 125 def post(path:, params: {}, query: {}, headers: {}, request_options: {}) request( method: :post, path: path, params: params, query: query, headers: headers, request_options: ) end |
#project ⇒ Uploadcare::Api::Rest::Project
Returns Project information endpoint.
60 61 62 |
# File 'lib/uploadcare/api/rest.rb', line 60 def project memoized(:@project) { Uploadcare::Api::Rest::Project.new(rest: self) } end |
#put(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a PUT request wrapped in a Result.
149 150 151 |
# File 'lib/uploadcare/api/rest.rb', line 149 def put(path:, params: {}, headers: {}, request_options: {}) request(method: :put, path: path, params: params, headers: headers, request_options: ) end |
#request(method:, path:, params: {}, query: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Wraps a request in a Result object.
184 185 186 187 188 189 190 |
# File 'lib/uploadcare/api/rest.rb', line 184 def request(method:, path:, params: {}, query: {}, headers: {}, request_options: {}) Uploadcare::Result.capture do make_request( method: method, path: path, params: params, query: query, headers: headers, request_options: ) end end |
#video_conversions ⇒ Uploadcare::Api::Rest::VideoConversions
Returns Video conversion endpoint.
90 91 92 |
# File 'lib/uploadcare/api/rest.rb', line 90 def video_conversions memoized(:@video_conversions) { Uploadcare::Api::Rest::VideoConversions.new(rest: self) } end |
#webhooks ⇒ Uploadcare::Api::Rest::Webhooks
Returns Webhook operations endpoint.
65 66 67 |
# File 'lib/uploadcare/api/rest.rb', line 65 def webhooks memoized(:@webhooks) { Uploadcare::Api::Rest::Webhooks.new(rest: self) } end |