Class: Uploadcare::Resources::Group

Inherits:
BaseResource
  • Object
show all
Defined in:
lib/uploadcare/resources/group.rb

Overview

Group resource representing a collection of files in Uploadcare.

Constant Summary collapse

ATTRIBUTES =

API fields assigned onto group resources.

%i[
  id datetime_removed datetime_stored datetime_uploaded is_image is_ready mime_type original_file_url cdn_url
  original_filename size url uuid variations content_info metadata appdata source datetime_created files_count
  files
].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#appdataObject

Returns the value of attribute appdata.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def appdata
  @appdata
end

#cdn_urlString

Returns the CDN URL for this group.

Returns:

  • (String)


128
129
130
131
132
# File 'lib/uploadcare/resources/group.rb', line 128

def cdn_url
  return @cdn_url if @cdn_url && !@cdn_url.empty?

  "#{config.cdn_base}#{id}/"
end

#content_infoObject

Returns the value of attribute content_info.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def 
  @content_info
end

#datetime_createdObject

Returns the value of attribute datetime_created.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def datetime_created
  @datetime_created
end

#datetime_removedObject

Returns the value of attribute datetime_removed.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def datetime_removed
  @datetime_removed
end

#datetime_storedObject

Returns the value of attribute datetime_stored.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def datetime_stored
  @datetime_stored
end

#datetime_uploadedObject

Returns the value of attribute datetime_uploaded.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def datetime_uploaded
  @datetime_uploaded
end

#filesObject

Returns the value of attribute files.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def files
  @files
end

#files_countObject

Returns the value of attribute files_count.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def files_count
  @files_count
end

#idString?

Returns group ID, extracting from CDN URL if needed.

Returns:

  • (String, nil)


116
117
118
119
120
121
122
123
# File 'lib/uploadcare/resources/group.rb', line 116

def id
  return @id if @id
  return @uuid if defined?(@uuid) && !@uuid.to_s.empty?
  return unless @cdn_url

  uri = URI.parse(@cdn_url)
  @id = uri.path.split('/').reject(&:empty?).first
end

#is_imageObject

Returns the value of attribute is_image.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def is_image
  @is_image
end

#is_readyObject

Returns the value of attribute is_ready.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def is_ready
  @is_ready
end

#metadataObject

Returns the value of attribute metadata.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def 
  @metadata
end

#mime_typeObject

Returns the value of attribute mime_type.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def mime_type
  @mime_type
end

#original_file_urlObject

Returns the value of attribute original_file_url.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def original_file_url
  @original_file_url
end

#original_filenameObject

Returns the value of attribute original_filename.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def original_filename
  @original_filename
end

#sizeObject

Returns the value of attribute size.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def size
  @size
end

#sourceObject

Returns the value of attribute source.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def source
  @source
end

#urlObject

Returns the value of attribute url.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def url
  @url
end

#uuidObject

Returns the value of attribute uuid.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def uuid
  @uuid
end

#variationsObject

Returns the value of attribute variations.



17
18
19
# File 'lib/uploadcare/resources/group.rb', line 17

def variations
  @variations
end

Class Method Details

.create(uuids:, client: nil, config: Uploadcare.configuration, request_options: {}, **options) ⇒ Uploadcare::Resources::Group

Create a group from file UUIDs.

Parameters:

  • uuids (Array<String>)

    File UUIDs

  • client (Uploadcare::Client, nil) (defaults to: nil)

    Client instance

  • config (Uploadcare::Configuration) (defaults to: Uploadcare.configuration)

    Configuration fallback

  • options (Hash)

    Additional options

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

    Request options

Returns:



78
79
80
81
82
83
84
85
86
# File 'lib/uploadcare/resources/group.rb', line 78

def self.create(uuids:, client: nil, config: Uploadcare.configuration, request_options: {}, **options)
  resolved_client = resolve_client(client: client, config: config)
  response = Uploadcare::Result.unwrap(
    resolved_client.api.upload.groups.create(
      files: uuids, request_options: request_options, **options
    )
  )
  new(response, resolved_client)
end

.find(group_id:, client: nil, config: Uploadcare.configuration, request_options: {}) ⇒ Uploadcare::Resources::Group Also known as: retrieve, info

Find a group by ID.

Parameters:

  • group_id (String)

    Group UUID (formatted as UUID~size)

  • client (Uploadcare::Client, nil) (defaults to: nil)

    Client instance

  • config (Uploadcare::Configuration) (defaults to: Uploadcare.configuration)

    Configuration fallback

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

    Request options

Returns:



57
58
59
60
61
62
63
# File 'lib/uploadcare/resources/group.rb', line 57

def self.find(group_id:, client: nil, config: Uploadcare.configuration, request_options: {})
  resolved_client = resolve_client(client: client, config: config)
  response = Uploadcare::Result.unwrap(
    resolved_client.api.rest.groups.info(uuid: group_id, request_options: request_options)
  )
  new(response, resolved_client)
end

.list(params: {}, client: nil, config: Uploadcare.configuration, request_options: {}) ⇒ Uploadcare::Collections::Paginated

List groups with optional filtering and pagination.

Parameters:

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

    Query parameters

  • client (Uploadcare::Client, nil) (defaults to: nil)

    Client instance

  • config (Uploadcare::Configuration) (defaults to: Uploadcare.configuration)

    Configuration fallback

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

    Request options

Returns:



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/uploadcare/resources/group.rb', line 30

def self.list(params: {}, client: nil, config: Uploadcare.configuration, request_options: {})
  resolved_client = resolve_client(client: client, config: config)
  response = Uploadcare::Result.unwrap(
    resolved_client.api.rest.groups.list(params: params, request_options: request_options)
  )
  groups = response['results'].map { |data| new(data, resolved_client) }

  Uploadcare::Collections::Paginated.new(
    resources: groups,
    next_page: response['next'],
    previous_page: response['previous'],
    per_page: response['per_page'],
    total: response['total'],
    api_client: resolved_client.api.rest.groups,
    resource_class: self,
    client: resolved_client,
    request_options: request_options
  )
end

Instance Method Details

#delete(request_options: {}) ⇒ nil

Delete this group.

Parameters:

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

    Request options

Returns:

  • (nil)


107
108
109
110
111
# File 'lib/uploadcare/resources/group.rb', line 107

def delete(request_options: {})
  Uploadcare::Result.unwrap(
    client.api.rest.groups.delete(uuid: id, request_options: request_options)
  )
end

#file_cdn_urlsArray<String>

Returns CDN URLs for all files in the group.

Returns:

  • (Array<String>)


137
138
139
140
141
# File 'lib/uploadcare/resources/group.rb', line 137

def file_cdn_urls
  return [] if files_count.nil?

  files_count.times.map { |i| "#{cdn_url}nth/#{i}/" }
end

#reload(request_options: {}) ⇒ self Also known as: load

Reload group information from the API.

Parameters:

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

    Request options

Returns:

  • (self)


94
95
96
97
98
99
100
# File 'lib/uploadcare/resources/group.rb', line 94

def reload(request_options: {})
  response = Uploadcare::Result.unwrap(
    client.api.rest.groups.info(uuid: id, request_options: request_options)
  )
  assign_attributes(response)
  self
end