Class: Basecamp::Services::UploadsService
- Inherits:
-
BaseService
- Object
- BaseService
- Basecamp::Services::UploadsService
- Defined in:
- lib/basecamp/generated/services/uploads_service.rb
Overview
Service for Uploads operations
Instance Method Summary collapse
-
#create(vault_id:, attachable_sgid:, description: nil, base_name: nil, subscriptions: nil, visible_to_clients: nil) ⇒ Hash
Create a new upload in a vault.
-
#download(upload_id:) ⇒ Basecamp::DownloadResult
Download an upload's file content in one call.
-
#get(upload_id:) ⇒ Hash
Get a single upload by id.
-
#list(vault_id:) ⇒ Enumerator<Hash>
List uploads in a vault.
-
#list_versions(upload_id:) ⇒ Enumerator<Hash>
List versions of an upload.
-
#update(upload_id:, description: nil, base_name: nil) ⇒ Hash
Update an existing upload.
Constructor Details
This class inherits a constructor from Basecamp::Services::BaseService
Instance Method Details
#create(vault_id:, attachable_sgid:, description: nil, base_name: nil, subscriptions: nil, visible_to_clients: nil) ⇒ Hash
Create a new upload in a vault
56 57 58 59 60 |
# File 'lib/basecamp/generated/services/uploads_service.rb', line 56 def create(vault_id:, attachable_sgid:, description: nil, base_name: nil, subscriptions: nil, visible_to_clients: nil) with_operation(service: "uploads", operation: "create", is_mutation: true, resource_id: vault_id) do http_post("/vaults/#{vault_id}/uploads.json", body: compact_params(attachable_sgid: attachable_sgid, description: description, base_name: base_name, subscriptions: subscriptions, visible_to_clients: visible_to_clients)).json end end |
#download(upload_id:) ⇒ Basecamp::DownloadResult
Download an upload's file content in one call. Fetches upload metadata, then delegates to the AccountClient download primitive so the auth'd-hop + 302-follow flow lives in one place.
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/basecamp/generated/services/uploads_service.rb', line 67 def download(upload_id:) with_operation(service: "uploads", operation: "download", is_mutation: false, resource_id: upload_id) do upload = get(upload_id: upload_id) url = upload["download_url"] raise UsageError.new("upload #{upload_id} has no download_url") if url.nil? || url.empty? result = @client.download_url(url) filename = upload["filename"] filename.to_s.empty? ? result : result.with(filename: filename) end end |
#get(upload_id:) ⇒ Hash
Get a single upload by id
13 14 15 16 17 |
# File 'lib/basecamp/generated/services/uploads_service.rb', line 13 def get(upload_id:) with_operation(service: "uploads", operation: "get", is_mutation: false, resource_id: upload_id) do http_get("/uploads/#{upload_id}").json end end |
#list(vault_id:) ⇒ Enumerator<Hash>
List uploads in a vault
42 43 44 45 46 |
# File 'lib/basecamp/generated/services/uploads_service.rb', line 42 def list(vault_id:) wrap_paginated(service: "uploads", operation: "list", is_mutation: false, resource_id: vault_id) do paginate("/vaults/#{vault_id}/uploads.json") end end |
#list_versions(upload_id:) ⇒ Enumerator<Hash>
List versions of an upload
33 34 35 36 37 |
# File 'lib/basecamp/generated/services/uploads_service.rb', line 33 def list_versions(upload_id:) wrap_paginated(service: "uploads", operation: "list_versions", is_mutation: false, resource_id: upload_id) do paginate("/uploads/#{upload_id}/versions.json") end end |
#update(upload_id:, description: nil, base_name: nil) ⇒ Hash
Update an existing upload
24 25 26 27 28 |
# File 'lib/basecamp/generated/services/uploads_service.rb', line 24 def update(upload_id:, description: nil, base_name: nil) with_operation(service: "uploads", operation: "update", is_mutation: true, resource_id: upload_id) do http_put("/uploads/#{upload_id}", body: compact_params(description: description, base_name: base_name)).json end end |