Class: ResourceSpace::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/resourcespace/collection.rb

Overview

Collection management interface for ResourceSpace API

Examples:

collections = client.collections

# Get user collections
user_collections = collections.get_user_collections

# Create a new collection
collection = collections.create_collection("My Web Assets")

# Add resources to collection
collections.add_resource_to_collection(123, collection_id)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Collection

Initialize the collection interface

Parameters:

  • client (Client)

    ResourceSpace client instance



24
25
26
# File 'lib/resourcespace/collection.rb', line 24

def initialize(client)
  @client = client
end

Instance Attribute Details

#clientClient (readonly)

Returns the ResourceSpace client.

Returns:

  • (Client)

    the ResourceSpace client



19
20
21
# File 'lib/resourcespace/collection.rb', line 19

def client
  @client
end

Instance Method Details

#add_resource_to_collection(resource_id, collection_id) ⇒ Hash

Add a resource to a collection

Parameters:

  • resource_id (Integer)

    resource ID

  • collection_id (Integer)

    collection ID

Returns:

  • (Hash)

    response



92
93
94
95
96
97
# File 'lib/resourcespace/collection.rb', line 92

def add_resource_to_collection(resource_id, collection_id)
  client.post("add_resource_to_collection", {
    param1: resource_id.to_s,
    param2: collection_id.to_s
  })
end

#add_resources_to_collection(resource_ids, collection_id) ⇒ Array

Add multiple resources to a collection

Parameters:

  • resource_ids (Array<Integer>)

    array of resource IDs

  • collection_id (Integer)

    collection ID

Returns:

  • (Array)

    array of responses



163
164
165
166
167
# File 'lib/resourcespace/collection.rb', line 163

def add_resources_to_collection(resource_ids, collection_id)
  Array(resource_ids).map do |resource_id|
    add_resource_to_collection(resource_id, collection_id)
  end
end

#create_collection(name, public: false, allow_changes: true) ⇒ Hash

Create a new collection

Parameters:

  • name (String)

    collection name

  • public (Boolean) (defaults to: false)

    whether collection is public

  • allow_changes (Boolean) (defaults to: true)

    whether to allow changes to collection

Returns:

  • (Hash)

    created collection data



45
46
47
48
49
50
51
52
53
# File 'lib/resourcespace/collection.rb', line 45

def create_collection(name, public: false, allow_changes: true)
  params = {
    param1: name,
    param2: public ? "1" : "0"
  }
  params[:param3] = allow_changes ? "1" : "0"

  client.post("create_collection", params)
end

#create_web_asset_collection(name, asset_type: nil, public: false) ⇒ Hash

Create a collection for web assets

Parameters:

  • name (String)

    collection name

  • asset_type (String) (defaults to: nil)

    type of web assets ("images", "css", "js", "fonts", "icons")

  • public (Boolean) (defaults to: false)

    whether collection is public

Returns:

  • (Hash)

    created collection data



186
187
188
189
# File 'lib/resourcespace/collection.rb', line 186

def create_web_asset_collection(name, asset_type: nil, public: false)
  collection_name = asset_type ? "#{name} - #{asset_type.capitalize}" : name
  create_collection(collection_name, public: public)
end

#delete_collection(collection_id) ⇒ Hash

Delete a collection

Parameters:

  • collection_id (Integer)

    collection ID

Returns:

  • (Hash)

    response



59
60
61
# File 'lib/resourcespace/collection.rb', line 59

def delete_collection(collection_id)
  client.post("delete_collection", { param1: collection_id.to_s })
end

#delete_resources_in_collection(collection_id) ⇒ Hash

Delete all resources in a collection

Parameters:

  • collection_id (Integer)

    collection ID

Returns:

  • (Hash)

    response



154
155
156
# File 'lib/resourcespace/collection.rb', line 154

def delete_resources_in_collection(collection_id)
  client.post("delete_resources_in_collection", { param1: collection_id.to_s })
end

#get_collection(collection_id) ⇒ Hash

Get collection details

Parameters:

  • collection_id (Integer)

    collection ID

Returns:

  • (Hash)

    collection details



67
68
69
# File 'lib/resourcespace/collection.rb', line 67

def get_collection(collection_id)
  client.get("get_collection", { param1: collection_id.to_s })
end

Get featured collections

Returns:

  • (Array)

    featured collections



146
147
148
# File 'lib/resourcespace/collection.rb', line 146

def get_featured_collections
  client.get("get_featured_collections")
end

#get_user_collections(user = nil) ⇒ Array

Get user collections

Parameters:

  • user (String) (defaults to: nil)

    username (optional, defaults to current user)

Returns:

  • (Array)

    user collections



32
33
34
35
36
37
# File 'lib/resourcespace/collection.rb', line 32

def get_user_collections(user = nil)
  params = {}
  params[:param1] = user if user

  client.get("get_user_collections", params)
end

#get_web_asset_collections(asset_type: nil) ⇒ Array

Get collections containing web assets

Parameters:

  • asset_type (String) (defaults to: nil)

    type of web assets to filter by

Returns:

  • (Array)

    collections with web assets



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/resourcespace/collection.rb', line 195

def get_web_asset_collections(asset_type: nil)
  collections = get_user_collections

  # Filter collections that likely contain web assets based on name
  web_asset_keywords = %w[web asset css js javascript image icon font stylesheet]

  if asset_type
    web_asset_keywords << asset_type.downcase
  end

  collections.select do |collection|
    name = collection["name"]&.downcase || ""
    web_asset_keywords.any? { |keyword| name.include?(keyword) }
  end
end

#remove_resource_from_collection(resource_id, collection_id) ⇒ Hash

Remove a resource from a collection

Parameters:

  • resource_id (Integer)

    resource ID

  • collection_id (Integer)

    collection ID

Returns:

  • (Hash)

    response



104
105
106
107
108
109
# File 'lib/resourcespace/collection.rb', line 104

def remove_resource_from_collection(resource_id, collection_id)
  client.post("remove_resource_from_collection", {
    param1: resource_id.to_s,
    param2: collection_id.to_s
  })
end

#remove_resources_from_collection(resource_ids, collection_id) ⇒ Array

Remove multiple resources from a collection

Parameters:

  • resource_ids (Array<Integer>)

    array of resource IDs

  • collection_id (Integer)

    collection ID

Returns:

  • (Array)

    array of responses



174
175
176
177
178
# File 'lib/resourcespace/collection.rb', line 174

def remove_resources_from_collection(resource_ids, collection_id)
  Array(resource_ids).map do |resource_id|
    remove_resource_from_collection(resource_id, collection_id)
  end
end

#save_collection(collection_id, name: nil, public: nil, allow_changes: nil) ⇒ Hash

Save collection (update collection details)

Parameters:

  • collection_id (Integer)

    collection ID

  • name (String) (defaults to: nil)

    new collection name

  • public (Boolean) (defaults to: nil)

    whether collection is public

  • allow_changes (Boolean) (defaults to: nil)

    whether to allow changes

Returns:

  • (Hash)

    response



78
79
80
81
82
83
84
85
# File 'lib/resourcespace/collection.rb', line 78

def save_collection(collection_id, name: nil, public: nil, allow_changes: nil)
  params = { param1: collection_id.to_s }
  params[:param2] = name if name
  params[:param3] = public ? "1" : "0" unless public.nil?
  params[:param4] = allow_changes ? "1" : "0" unless allow_changes.nil?

  client.post("save_collection", params)
end

#search_public_collections(search_term) ⇒ Array

Search public collections

Parameters:

  • search_term (String)

    search term

Returns:

  • (Array)

    matching public collections



139
140
141
# File 'lib/resourcespace/collection.rb', line 139

def search_public_collections(search_term)
  client.get("search_public_collections", { param1: search_term })
end

#send_collection_to_admin(collection_id, message = "") ⇒ Hash

Send collection to admin

Parameters:

  • collection_id (Integer)

    collection ID

  • message (String) (defaults to: "")

    message to admin

Returns:

  • (Hash)

    response



128
129
130
131
132
133
# File 'lib/resourcespace/collection.rb', line 128

def send_collection_to_admin(collection_id, message = "")
  client.post("send_collection_to_admin", {
    param1: collection_id.to_s,
    param2: message
  })
end

#show_hide_collection(collection_id, show: true) ⇒ Hash

Show or hide a collection

Parameters:

  • collection_id (Integer)

    collection ID

  • show (Boolean) (defaults to: true)

    true to show, false to hide

Returns:

  • (Hash)

    response



116
117
118
119
120
121
# File 'lib/resourcespace/collection.rb', line 116

def show_hide_collection(collection_id, show: true)
  client.post("show_hide_collection", {
    param1: collection_id.to_s,
    param2: show ? "1" : "0"
  })
end