Class: StackShift::AssetsClient
- Inherits:
-
Object
- Object
- StackShift::AssetsClient
- Defined in:
- lib/stackshift/assets_client.rb
Instance Method Summary collapse
- #ai(asset_id) ⇒ Object
- #analytics ⇒ Object
- #analyze(asset_id, idempotency_key: nil) ⇒ Object
- #branch_url(asset_id, branch, token: nil) ⇒ Object
- #bulk(action:, items:, idempotency_key: nil, **options) ⇒ Object
- #cancel_job(job_id) ⇒ Object
- #cancel_upload_session(session_id) ⇒ Object
- #collections ⇒ Object
- #complete_upload_session(session_id) ⇒ Object
- #create_branch(asset_id, name, from_version_id: nil) ⇒ Object
- #create_bucket(**policy) ⇒ Object
- #create_collection(**collection) ⇒ Object
- #create_domain(domain) ⇒ Object
- #create_lifecycle_rule(**rule) ⇒ Object
- #create_saved_search(**search) ⇒ Object
- #create_transformation(name, **options) ⇒ Object
- #create_upload_session(idempotency_key: nil, **options) ⇒ Object
- #create_webhook(url, event_types: ['asset.*']) ⇒ Object
- #delete(asset_id, revision:, idempotency_key: nil) ⇒ Object
- #delete_bucket(bucket_id, revision:) ⇒ Object
- #delete_collection(collection_id) ⇒ Object
- #delete_domain(domain_id) ⇒ Object
- #delete_lifecycle_rule(rule_id) ⇒ Object
- #delete_saved_search(search_id) ⇒ Object
- #delete_transformation(name) ⇒ Object
- #delete_webhook(webhook_id) ⇒ Object
- #events(limit: 50) ⇒ Object
- #get(asset_id) ⇒ Object
- #get_ai_config ⇒ Object
- #get_policy ⇒ Object
- #immutable_version_url(asset_id, version_id, filename = "asset") ⇒ Object
-
#initialize(api_key:, base_url: "https://api.stackshift.cloud/api/v1", cdn_base_url: "https://cdn.stackshift.cloud") ⇒ AssetsClient
constructor
A new instance of AssetsClient.
- #job(job_id) ⇒ Object
- #list(**filters) ⇒ Object
- #list_buckets ⇒ Object
- #list_domains ⇒ Object
- #list_lifecycle_rules ⇒ Object
- #list_transformations ⇒ Object
- #list_webhook_deliveries(webhook_id, limit: 50) ⇒ Object
- #list_webhooks ⇒ Object
- #moderate(asset_id, idempotency_key: nil) ⇒ Object
- #patch(asset_id, revision:, **changes) ⇒ Object
- #patch_metadata(asset_id, metadata, revision:) ⇒ Object
- #promote_branch(asset_id, branch) ⇒ Object
- #purge(asset_id) ⇒ Object
- #replace(asset_id, file_path, revision:, **options) ⇒ Object
- #request_background_removal(asset_id, idempotency_key: nil) ⇒ Object
- #request_smart_crop(asset_id, idempotency_key: nil) ⇒ Object
- #request_transcript(asset_id, idempotency_key: nil) ⇒ Object
- #restore_version(asset_id, version_id) ⇒ Object
- #resume_upload_session(session_id) ⇒ Object
- #retry_webhook_delivery(delivery_id) ⇒ Object
- #saved_searches ⇒ Object
- #set_tags(asset_id, tags, revision:) ⇒ Object
- #signed_transform_url(asset_id, **options) ⇒ Object
- #signed_upload_url(idempotency_key: nil, **options) ⇒ Object
- #signed_url(asset_id, expires_in: "10m", max_downloads: nil) ⇒ Object
- #transcript(asset_id) ⇒ Object
- #update_ai_config(revision:, enabled_actions:, monthly_spend_cap_micros:) ⇒ Object
- #update_bucket(bucket_id, revision:, **policy) ⇒ Object
- #update_collection(collection_id, **collection) ⇒ Object
- #update_policy(**policy) ⇒ Object
- #update_saved_search(search_id, **search) ⇒ Object
- #upload(file_path, **options) ⇒ Object
- #upload_chunk(upload_url_or_token, part_number, bytes) ⇒ Object
- #usage_summary ⇒ Object
- #verify_domain(domain_id) ⇒ Object
- #version_url(asset_id, version_id, token: nil) ⇒ Object
- #versions(asset_id) ⇒ Object
- #video_url(asset_id, kind, profile = "default", token: nil) ⇒ Object
Constructor Details
#initialize(api_key:, base_url: "https://api.stackshift.cloud/api/v1", cdn_base_url: "https://cdn.stackshift.cloud") ⇒ AssetsClient
Returns a new instance of AssetsClient.
11 12 13 14 15 16 17 |
# File 'lib/stackshift/assets_client.rb', line 11 def initialize(api_key:, base_url: "https://api.stackshift.cloud/api/v1", cdn_base_url: "https://cdn.stackshift.cloud") raise ArgumentError, "StackShift SDK requires an API key" if api_key.to_s.strip.empty? @api_key = api_key @base_url = base_url.sub(%r{/$}, "") @cdn_base_url = cdn_base_url.sub(%r{/$}, "") end |
Instance Method Details
#ai(asset_id) ⇒ Object
152 153 154 |
# File 'lib/stackshift/assets_client.rb', line 152 def ai(asset_id) request(:get, "/assets/#{escape(asset_id)}/ai") end |
#analytics ⇒ Object
204 205 206 |
# File 'lib/stackshift/assets_client.rb', line 204 def analytics request(:get, "/assets/analytics") end |
#analyze(asset_id, idempotency_key: nil) ⇒ Object
148 149 150 |
# File 'lib/stackshift/assets_client.rb', line 148 def analyze(asset_id, idempotency_key: nil) asset_job("/assets/#{escape(asset_id)}/ai/analyze", idempotency_key) end |
#branch_url(asset_id, branch, token: nil) ⇒ Object
303 304 305 306 307 |
# File 'lib/stackshift/assets_client.rb', line 303 def branch_url(asset_id, branch, token: nil) prefix = token ? "/private/assets" : "/assets" url = "#{@cdn_base_url}#{prefix}/#{escape(asset_id)}/branches/#{escape(branch)}" token ? "#{url}?token=#{escape(token)}" : url end |
#bulk(action:, items:, idempotency_key: nil, **options) ⇒ Object
240 241 242 243 |
# File 'lib/stackshift/assets_client.rb', line 240 def bulk(action:, items:, idempotency_key: nil, **) headers = idempotency_key ? { "Idempotency-Key" => idempotency_key } : {} request(:post, "/assets/bulk", body: .merge(action: action, items: items), headers: headers) end |
#cancel_job(job_id) ⇒ Object
144 145 146 |
# File 'lib/stackshift/assets_client.rb', line 144 def cancel_job(job_id) request(:post, "/assets/jobs/#{escape(job_id)}/cancel") end |
#cancel_upload_session(session_id) ⇒ Object
69 70 71 |
# File 'lib/stackshift/assets_client.rb', line 69 def cancel_upload_session(session_id) request(:delete, "/assets/upload-sessions/#{escape(session_id)}") end |
#collections ⇒ Object
261 262 263 |
# File 'lib/stackshift/assets_client.rb', line 261 def collections request(:get, "/assets/collections") end |
#complete_upload_session(session_id) ⇒ Object
61 62 63 |
# File 'lib/stackshift/assets_client.rb', line 61 def complete_upload_session(session_id) request(:post, "/assets/upload-sessions/#{escape(session_id)}/complete") end |
#create_branch(asset_id, name, from_version_id: nil) ⇒ Object
249 250 251 |
# File 'lib/stackshift/assets_client.rb', line 249 def create_branch(asset_id, name, from_version_id: nil) request(:post, "/assets/#{escape(asset_id)}/branches", body: compact(name: name, from_version_id: from_version_id)) end |
#create_bucket(**policy) ⇒ Object
82 83 84 |
# File 'lib/stackshift/assets_client.rb', line 82 def create_bucket(**policy) request(:post, "/assets/buckets", body: compact(policy)) end |
#create_collection(**collection) ⇒ Object
265 266 267 |
# File 'lib/stackshift/assets_client.rb', line 265 def create_collection(**collection) request(:post, "/assets/collections", body: compact(collection)) end |
#create_domain(domain) ⇒ Object
188 189 190 |
# File 'lib/stackshift/assets_client.rb', line 188 def create_domain(domain) request(:post, "/assets/domains", body: { domain: domain }) end |
#create_lifecycle_rule(**rule) ⇒ Object
176 177 178 |
# File 'lib/stackshift/assets_client.rb', line 176 def create_lifecycle_rule(**rule) request(:post, "/assets/lifecycle-rules", body: compact(rule)) end |
#create_saved_search(**search) ⇒ Object
281 282 283 |
# File 'lib/stackshift/assets_client.rb', line 281 def create_saved_search(**search) request(:post, "/assets/saved-searches", body: compact(search)) end |
#create_transformation(name, **options) ⇒ Object
122 123 124 |
# File 'lib/stackshift/assets_client.rb', line 122 def create_transformation(name, **) request(:post, "/assets/transformations", body: compact(.merge(name: name))) end |
#create_upload_session(idempotency_key: nil, **options) ⇒ Object
41 42 43 44 |
# File 'lib/stackshift/assets_client.rb', line 41 def create_upload_session(idempotency_key: nil, **) headers = idempotency_key ? { "Idempotency-Key" => idempotency_key } : {} request(:post, "/assets/upload-sessions", body: compact(), headers: headers) end |
#create_webhook(url, event_types: ['asset.*']) ⇒ Object
216 217 218 |
# File 'lib/stackshift/assets_client.rb', line 216 def create_webhook(url, event_types: ['asset.*']) request(:post, '/assets/webhooks', body: { url: url, event_types: event_types }) end |
#delete(asset_id, revision:, idempotency_key: nil) ⇒ Object
27 28 29 30 31 |
# File 'lib/stackshift/assets_client.rb', line 27 def delete(asset_id, revision:, idempotency_key: nil) headers = if_match(revision) headers["Idempotency-Key"] = idempotency_key if idempotency_key request(:delete, "/assets/#{escape(asset_id)}", headers: headers) end |
#delete_bucket(bucket_id, revision:) ⇒ Object
90 91 92 |
# File 'lib/stackshift/assets_client.rb', line 90 def delete_bucket(bucket_id, revision:) request(:delete, "/assets/buckets/#{escape(bucket_id)}", headers: if_match(revision)) end |
#delete_collection(collection_id) ⇒ Object
273 274 275 |
# File 'lib/stackshift/assets_client.rb', line 273 def delete_collection(collection_id) request(:delete, "/assets/collections/#{escape(collection_id)}") end |
#delete_domain(domain_id) ⇒ Object
200 201 202 |
# File 'lib/stackshift/assets_client.rb', line 200 def delete_domain(domain_id) request(:delete, "/assets/domains/#{escape(domain_id)}") end |
#delete_lifecycle_rule(rule_id) ⇒ Object
184 185 186 |
# File 'lib/stackshift/assets_client.rb', line 184 def delete_lifecycle_rule(rule_id) request(:delete, "/assets/lifecycle-rules/#{escape(rule_id)}") end |
#delete_saved_search(search_id) ⇒ Object
289 290 291 |
# File 'lib/stackshift/assets_client.rb', line 289 def delete_saved_search(search_id) request(:delete, "/assets/saved-searches/#{escape(search_id)}") end |
#delete_transformation(name) ⇒ Object
126 127 128 |
# File 'lib/stackshift/assets_client.rb', line 126 def delete_transformation(name) request(:delete, "/assets/transformations/#{escape(name)}") end |
#delete_webhook(webhook_id) ⇒ Object
224 225 226 |
# File 'lib/stackshift/assets_client.rb', line 224 def delete_webhook(webhook_id) request(:delete, "/assets/webhooks/#{escape(webhook_id)}") end |
#events(limit: 50) ⇒ Object
212 213 214 |
# File 'lib/stackshift/assets_client.rb', line 212 def events(limit: 50) request(:get, "/assets/events", query: { limit: limit }) end |
#get(asset_id) ⇒ Object
23 24 25 |
# File 'lib/stackshift/assets_client.rb', line 23 def get(asset_id) request(:get, "/assets/#{escape(asset_id)}") end |
#get_ai_config ⇒ Object
106 107 108 |
# File 'lib/stackshift/assets_client.rb', line 106 def get_ai_config request(:get, "/assets/ai/config") end |
#get_policy ⇒ Object
110 111 112 |
# File 'lib/stackshift/assets_client.rb', line 110 def get_policy request(:get, "/assets/policy") end |
#immutable_version_url(asset_id, version_id, filename = "asset") ⇒ Object
293 294 295 |
# File 'lib/stackshift/assets_client.rb', line 293 def immutable_version_url(asset_id, version_id, filename = "asset") "#{@cdn_base_url}/assets/#{escape(asset_id)}/versions/#{escape(version_id)}/#{escape(filename)}" end |
#job(job_id) ⇒ Object
140 141 142 |
# File 'lib/stackshift/assets_client.rb', line 140 def job(job_id) request(:get, "/assets/jobs/#{escape(job_id)}") end |
#list(**filters) ⇒ Object
19 20 21 |
# File 'lib/stackshift/assets_client.rb', line 19 def list(**filters) request(:get, "/assets", query: compact(filters)) end |
#list_buckets ⇒ Object
78 79 80 |
# File 'lib/stackshift/assets_client.rb', line 78 def list_buckets request(:get, "/assets/buckets") end |
#list_domains ⇒ Object
192 193 194 |
# File 'lib/stackshift/assets_client.rb', line 192 def list_domains request(:get, "/assets/domains") end |
#list_lifecycle_rules ⇒ Object
180 181 182 |
# File 'lib/stackshift/assets_client.rb', line 180 def list_lifecycle_rules request(:get, "/assets/lifecycle-rules") end |
#list_transformations ⇒ Object
118 119 120 |
# File 'lib/stackshift/assets_client.rb', line 118 def list_transformations request(:get, "/assets/transformations") end |
#list_webhook_deliveries(webhook_id, limit: 50) ⇒ Object
228 229 230 |
# File 'lib/stackshift/assets_client.rb', line 228 def list_webhook_deliveries(webhook_id, limit: 50) request(:get, "/assets/webhooks/#{escape(webhook_id)}/deliveries", query: { limit: limit }) end |
#list_webhooks ⇒ Object
220 221 222 |
# File 'lib/stackshift/assets_client.rb', line 220 def list_webhooks request(:get, '/assets/webhooks') end |
#moderate(asset_id, idempotency_key: nil) ⇒ Object
156 157 158 |
# File 'lib/stackshift/assets_client.rb', line 156 def moderate(asset_id, idempotency_key: nil) asset_job("/assets/#{escape(asset_id)}/moderation", idempotency_key) end |
#patch(asset_id, revision:, **changes) ⇒ Object
94 95 96 |
# File 'lib/stackshift/assets_client.rb', line 94 def patch(asset_id, revision:, **changes) request(:patch, "/assets/#{escape(asset_id)}", body: compact(changes), headers: if_match(revision)) end |
#patch_metadata(asset_id, metadata, revision:) ⇒ Object
102 103 104 |
# File 'lib/stackshift/assets_client.rb', line 102 def (asset_id, , revision:) request(:patch, "/assets/#{escape(asset_id)}/metadata", body: { metadata: }, headers: if_match(revision)) end |
#promote_branch(asset_id, branch) ⇒ Object
257 258 259 |
# File 'lib/stackshift/assets_client.rb', line 257 def promote_branch(asset_id, branch) request(:post, "/assets/#{escape(asset_id)}/branches/#{escape(branch)}/promote") end |
#purge(asset_id) ⇒ Object
236 237 238 |
# File 'lib/stackshift/assets_client.rb', line 236 def purge(asset_id) request(:post, "/assets/#{escape(asset_id)}/purge") end |
#replace(asset_id, file_path, revision:, **options) ⇒ Object
37 38 39 |
# File 'lib/stackshift/assets_client.rb', line 37 def replace(asset_id, file_path, revision:, **) multipart(:put, "/assets/#{escape(asset_id)}/replace", file_path, , headers: if_match(revision)) end |
#request_background_removal(asset_id, idempotency_key: nil) ⇒ Object
172 173 174 |
# File 'lib/stackshift/assets_client.rb', line 172 def request_background_removal(asset_id, idempotency_key: nil) asset_job("/assets/#{escape(asset_id)}/background-remove", idempotency_key) end |
#request_smart_crop(asset_id, idempotency_key: nil) ⇒ Object
168 169 170 |
# File 'lib/stackshift/assets_client.rb', line 168 def request_smart_crop(asset_id, idempotency_key: nil) asset_job("/assets/#{escape(asset_id)}/smart-crop", idempotency_key) end |
#request_transcript(asset_id, idempotency_key: nil) ⇒ Object
164 165 166 |
# File 'lib/stackshift/assets_client.rb', line 164 def request_transcript(asset_id, idempotency_key: nil) asset_job("/assets/#{escape(asset_id)}/transcript", idempotency_key) end |
#restore_version(asset_id, version_id) ⇒ Object
253 254 255 |
# File 'lib/stackshift/assets_client.rb', line 253 def restore_version(asset_id, version_id) request(:post, "/assets/#{escape(asset_id)}/versions/#{escape(version_id)}/restore") end |
#resume_upload_session(session_id) ⇒ Object
65 66 67 |
# File 'lib/stackshift/assets_client.rb', line 65 def resume_upload_session(session_id) request(:get, "/assets/upload-sessions/#{escape(session_id)}") end |
#retry_webhook_delivery(delivery_id) ⇒ Object
232 233 234 |
# File 'lib/stackshift/assets_client.rb', line 232 def retry_webhook_delivery(delivery_id) request(:post, "/assets/webhook-deliveries/#{escape(delivery_id)}/retry") end |
#saved_searches ⇒ Object
277 278 279 |
# File 'lib/stackshift/assets_client.rb', line 277 def saved_searches request(:get, "/assets/saved-searches") end |
#set_tags(asset_id, tags, revision:) ⇒ Object
98 99 100 |
# File 'lib/stackshift/assets_client.rb', line 98 def (asset_id, , revision:) request(:put, "/assets/#{escape(asset_id)}/tags", body: { tags: }, headers: if_match(revision)) end |
#signed_transform_url(asset_id, **options) ⇒ Object
130 131 132 |
# File 'lib/stackshift/assets_client.rb', line 130 def signed_transform_url(asset_id, **) request(:post, "/assets/#{escape(asset_id)}/transform-url", body: compact()) end |
#signed_upload_url(idempotency_key: nil, **options) ⇒ Object
46 47 48 49 |
# File 'lib/stackshift/assets_client.rb', line 46 def signed_upload_url(idempotency_key: nil, **) headers = idempotency_key ? { "Idempotency-Key" => idempotency_key } : {} request(:post, "/assets/upload-url", body: compact(), headers: headers) end |
#signed_url(asset_id, expires_in: "10m", max_downloads: nil) ⇒ Object
73 74 75 76 |
# File 'lib/stackshift/assets_client.rb', line 73 def signed_url(asset_id, expires_in: "10m", max_downloads: nil) request(:post, "/assets/#{escape(asset_id)}/signed-url", body: compact(expires_in: expires_in, max_downloads: max_downloads)) end |
#transcript(asset_id) ⇒ Object
160 161 162 |
# File 'lib/stackshift/assets_client.rb', line 160 def transcript(asset_id) request(:get, "/assets/#{escape(asset_id)}/transcript") end |
#update_ai_config(revision:, enabled_actions:, monthly_spend_cap_micros:) ⇒ Object
134 135 136 137 138 |
# File 'lib/stackshift/assets_client.rb', line 134 def update_ai_config(revision:, enabled_actions:, monthly_spend_cap_micros:) request(:put, "/assets/ai/config", body: { enabled_actions: enabled_actions, monthly_spend_cap_micros: monthly_spend_cap_micros }, headers: if_match(revision)) end |
#update_bucket(bucket_id, revision:, **policy) ⇒ Object
86 87 88 |
# File 'lib/stackshift/assets_client.rb', line 86 def update_bucket(bucket_id, revision:, **policy) request(:put, "/assets/buckets/#{escape(bucket_id)}", body: compact(policy), headers: if_match(revision)) end |
#update_collection(collection_id, **collection) ⇒ Object
269 270 271 |
# File 'lib/stackshift/assets_client.rb', line 269 def update_collection(collection_id, **collection) request(:put, "/assets/collections/#{escape(collection_id)}", body: compact(collection)) end |
#update_policy(**policy) ⇒ Object
114 115 116 |
# File 'lib/stackshift/assets_client.rb', line 114 def update_policy(**policy) request(:put, "/assets/policy", body: compact(policy)) end |
#update_saved_search(search_id, **search) ⇒ Object
285 286 287 |
# File 'lib/stackshift/assets_client.rb', line 285 def update_saved_search(search_id, **search) request(:put, "/assets/saved-searches/#{escape(search_id)}", body: compact(search)) end |
#upload(file_path, **options) ⇒ Object
33 34 35 |
# File 'lib/stackshift/assets_client.rb', line 33 def upload(file_path, **) multipart(:post, "/assets/upload", file_path, ) end |
#upload_chunk(upload_url_or_token, part_number, bytes) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/stackshift/assets_client.rb', line 51 def upload_chunk(upload_url_or_token, part_number, bytes) target = if upload_url_or_token.start_with?("http") upload_url_or_token.sub(%r{/$}, "") else @base_url.sub(%r{/api/v1$}, "") + "/uploads/#{escape(upload_url_or_token)}" end request_absolute(:put, "#{target}/parts/#{part_number}", body: bytes, json: false, authenticated: false, headers: { "Content-Type" => "application/octet-stream", "X-Content-SHA256" => Digest::SHA256.hexdigest(bytes) }) end |
#usage_summary ⇒ Object
208 209 210 |
# File 'lib/stackshift/assets_client.rb', line 208 def usage_summary request(:get, "/assets/summary") end |
#verify_domain(domain_id) ⇒ Object
196 197 198 |
# File 'lib/stackshift/assets_client.rb', line 196 def verify_domain(domain_id) request(:post, "/assets/domains/#{escape(domain_id)}/verify") end |
#version_url(asset_id, version_id, token: nil) ⇒ Object
297 298 299 300 301 |
# File 'lib/stackshift/assets_client.rb', line 297 def version_url(asset_id, version_id, token: nil) prefix = token ? "/private/assets" : "/assets" url = "#{@cdn_base_url}#{prefix}/#{escape(asset_id)}/versions/#{escape(version_id)}" token ? "#{url}?token=#{escape(token)}" : url end |
#versions(asset_id) ⇒ Object
245 246 247 |
# File 'lib/stackshift/assets_client.rb', line 245 def versions(asset_id) request(:get, "/assets/#{escape(asset_id)}/versions") end |
#video_url(asset_id, kind, profile = "default", token: nil) ⇒ Object
309 310 311 312 313 |
# File 'lib/stackshift/assets_client.rb', line 309 def video_url(asset_id, kind, profile = "default", token: nil) prefix = token ? "/private/assets" : "/assets" url = "#{@cdn_base_url}#{prefix}/#{escape(asset_id)}/video/#{escape(kind)}/#{escape(profile)}" token ? "#{url}?token=#{escape(token)}" : url end |