Class: Basecamp::Services::UploadsService

Inherits:
BaseService
  • Object
show all
Defined in:
lib/basecamp/generated/services/uploads_service.rb

Overview

Service for Uploads operations

Instance Method Summary collapse

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

Parameters:

  • vault_id (Integer)

    vault id ID

  • attachable_sgid (String)

    attachable sgid

  • description (String, nil) (defaults to: nil)

    description

  • base_name (String, nil) (defaults to: nil)

    base name

  • subscriptions (Array, nil) (defaults to: nil)

    subscriptions

  • visible_to_clients (Boolean, nil) (defaults to: nil)

    visible to clients

Returns:

  • (Hash)

    response data



60
61
62
63
64
# File 'lib/basecamp/generated/services/uploads_service.rb', line 60

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.

Parameters:

  • upload_id (Integer)

    upload id ID

Returns:



71
72
73
74
75
76
77
78
79
80
81
# File 'lib/basecamp/generated/services/uploads_service.rb', line 71

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

Parameters:

  • upload_id (Integer)

    upload id ID

Returns:

  • (Hash)

    response data



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}", operation: "GetUpload").json
  end
end

#list(vault_id:, page: nil, max_items: nil) ⇒ ListEnumerator<Hash>

List uploads in a vault

Parameters:

  • vault_id (Integer)

    vault id ID

  • page (Integer, nil) (defaults to: nil)

    Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.

  • max_items (Integer, nil) (defaults to: nil)

    cap on items yielded across pages; nil or non-positive means no cap

Returns:

  • (ListEnumerator<Hash>)

    lazily paginated results (#meta carries pagination metadata)



45
46
47
48
49
50
# File 'lib/basecamp/generated/services/uploads_service.rb', line 45

def list(vault_id:, page: nil, max_items: nil)
  wrap_paginated(service: "uploads", operation: "list", is_mutation: false, resource_id: vault_id) do
    params = compact_query_params(page: page)
    paginate("/vaults/#{vault_id}/uploads.json", params: params, operation: "ListUploads", max_items: max_items)
  end
end

#list_versions(upload_id:, max_items: nil) ⇒ ListEnumerator<Hash>

List versions of an upload

Parameters:

  • upload_id (Integer)

    upload id ID

  • max_items (Integer, nil) (defaults to: nil)

    cap on items yielded across pages; nil or non-positive means no cap

Returns:

  • (ListEnumerator<Hash>)

    lazily paginated results (#meta carries pagination metadata)



34
35
36
37
38
# File 'lib/basecamp/generated/services/uploads_service.rb', line 34

def list_versions(upload_id:, max_items: nil)
  wrap_paginated(service: "uploads", operation: "list_versions", is_mutation: false, resource_id: upload_id) do
    paginate("/uploads/#{upload_id}/versions.json", operation: "ListUploadVersions", max_items: max_items)
  end
end

#update(upload_id:, description: nil, base_name: nil) ⇒ Hash

Update an existing upload

Parameters:

  • upload_id (Integer)

    upload id ID

  • description (String, nil) (defaults to: nil)

    description

  • base_name (String, nil) (defaults to: nil)

    base name

Returns:

  • (Hash)

    response data



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