Class: Uploadcare::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/uploadcare/client.rb

Overview

Primary entry point for interacting with the Uploadcare API.

Each Client instance owns its own configuration and provides domain-scoped accessors for all API operations. Multiple clients can coexist for multi-account support.

Examples:

Basic usage

client = Uploadcare::Client.new(public_key: "pk", secret_key: "sk")
file = client.files.upload(File.open("photo.jpg"), store: true)
file = client.files.find(uuid: "file-uuid")
files = client.files.list(limit: 100)

Multi-account

 = Uploadcare::Client.new(public_key: "a", secret_key: "x")
 = Uploadcare::Client.new(public_key: "b", secret_key: "y")

Raw API access

client.api.rest.files.list(params: { limit: 10 })
client.api.upload.files.direct(file: file_obj)

Defined Under Namespace

Classes: AddonsAccessor, Api, ConversionsAccessor, DocumentConversionsAccessor, FileMetadataAccessor, FilesAccessor, GroupsAccessor, ProjectAccessor, VideoConversionsAccessor, WebhooksAccessor

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config: nil, **options) ⇒ Client

Build a client bound to a specific configuration.

Parameters:

  • config (Uploadcare::Configuration, nil) (defaults to: nil)

    Base configuration to clone

  • options (Hash)

    Per-client configuration overrides



29
30
31
32
33
# File 'lib/uploadcare/client.rb', line 29

def initialize(config: nil, **options)
  base_config = config || Uploadcare.configuration
  @config = base_config.with(**options)
  @memo_mutex = Mutex.new
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



23
24
25
# File 'lib/uploadcare/client.rb', line 23

def config
  @config
end

Instance Method Details

#addonsUploadcare::Client::AddonsAccessor

Access add-on execution helpers.



88
89
90
# File 'lib/uploadcare/client.rb', line 88

def addons
  memoized(:@addons) { AddonsAccessor.new(client: self) }
end

#apiUploadcare::Client::Api

Access the raw endpoint-parity API.



46
47
48
# File 'lib/uploadcare/client.rb', line 46

def api
  memoized(:@api) { Api.new(config: config) }
end

#conversionsUploadcare::Client::ConversionsAccessor

Access conversion helpers.



102
103
104
# File 'lib/uploadcare/client.rb', line 102

def conversions
  memoized(:@conversions) { ConversionsAccessor.new(client: self) }
end

#file_metadataUploadcare::Client::FileMetadataAccessor

Access file metadata operations.



95
96
97
# File 'lib/uploadcare/client.rb', line 95

def 
  memoized(:@file_metadata) { FileMetadataAccessor.new(client: self) }
end

#filesUploadcare::Client::FilesAccessor

Access file operations and upload helpers.



53
54
55
# File 'lib/uploadcare/client.rb', line 53

def files
  memoized(:@files) { FilesAccessor.new(client: self) }
end

#groupsUploadcare::Client::GroupsAccessor

Access group operations.



60
61
62
# File 'lib/uploadcare/client.rb', line 60

def groups
  memoized(:@groups) { GroupsAccessor.new(client: self) }
end

#projectUploadcare::Client::ProjectAccessor

Access project operations.



74
75
76
# File 'lib/uploadcare/client.rb', line 74

def project
  memoized(:@project) { ProjectAccessor.new(client: self) }
end

#upload(source, request_options: {}, **options) {|Hash| ... } ⇒ Uploadcare::Resources::File, ...

Upload a source through the convenience upload router.

Parameters:

  • source (IO, Array<IO>, String)

    File object, file array, or URL

  • request_options (Hash) (defaults to: {})

    Per-request HTTP options

  • options (Hash)

    Upload options

Yields:

  • (Hash)

    Multipart progress callback

Returns:



113
114
115
# File 'lib/uploadcare/client.rb', line 113

def upload(source, request_options: {}, **options, &block)
  uploads.upload(source, request_options: request_options, **options, &block)
end

#uploadsUploadcare::Operations::UploadRouter

Access upload routing helpers.



67
68
69
# File 'lib/uploadcare/client.rb', line 67

def uploads
  memoized(:@uploads) { Uploadcare::Operations::UploadRouter.new(client: self) }
end

#webhooksUploadcare::Client::WebhooksAccessor

Access webhook operations.



81
82
83
# File 'lib/uploadcare/client.rb', line 81

def webhooks
  memoized(:@webhooks) { WebhooksAccessor.new(client: self) }
end

#with(**options) ⇒ Uploadcare::Client

Build a new client derived from this client.

Parameters:

  • options (Hash)

    Configuration overrides

Returns:



39
40
41
# File 'lib/uploadcare/client.rb', line 39

def with(**options)
  self.class.new(config: config, **options)
end