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, 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.
-
#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: {}, headers: {}, request_options: {}) ⇒ Hash, ...
Make an HTTP request to the REST API.
-
#post(path:, params: {}, 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: {}, 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.
75 76 77 |
# File 'lib/uploadcare/api/rest.rb', line 75 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.
151 152 153 |
# File 'lib/uploadcare/api/rest.rb', line 151 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.
80 81 82 |
# File 'lib/uploadcare/api/rest.rb', line 80 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 |
#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.
129 130 131 |
# File 'lib/uploadcare/api/rest.rb', line 129 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: {}, headers: {}, request_options: {}) ⇒ Hash, ...
Make an HTTP request to the REST API.
100 101 102 103 104 105 106 107 108 109 |
# File 'lib/uploadcare/api/rest.rb', line 100 def make_request(method:, path:, params: {}, 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, headers, ) end response.body end rescue Faraday::Error => e handle_error(e) end |
#post(path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Make a POST request wrapped in a Result.
118 119 120 |
# File 'lib/uploadcare/api/rest.rb', line 118 def post(path:, params: {}, headers: {}, request_options: {}) request(method: :post, path: path, params: params, 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.
140 141 142 |
# File 'lib/uploadcare/api/rest.rb', line 140 def put(path:, params: {}, headers: {}, request_options: {}) request(method: :put, path: path, params: params, headers: headers, request_options: ) end |
#request(method:, path:, params: {}, headers: {}, request_options: {}) ⇒ Uploadcare::Result
Wraps a request in a Result object.
163 164 165 166 167 |
# File 'lib/uploadcare/api/rest.rb', line 163 def request(method:, path:, params: {}, headers: {}, request_options: {}) Uploadcare::Result.capture do make_request(method: method, path: path, params: params, headers: headers, request_options: ) end end |
#video_conversions ⇒ Uploadcare::Api::Rest::VideoConversions
Returns Video conversion endpoint.
85 86 87 |
# File 'lib/uploadcare/api/rest.rb', line 85 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 |