Class: Fulcrum::MediaResource

Inherits:
Resource
  • Object
show all
Includes:
Actions::Create, Actions::Find, Actions::List
Defined in:
lib/fulcrum/media_resource.rb

Direct Known Subclasses

Photo, Signature, Video

Constant Summary

Constants included from Actions::List

Actions::List::DEFAULT_PER_PAGE

Instance Attribute Summary

Attributes inherited from Resource

#client

Instance Method Summary collapse

Methods included from Actions::Create

#create_action

Methods included from Actions::Find

#find

Methods included from Actions::List

#all, #default_list_params

Methods inherited from Resource

#attributes_for_object, #call, #collection, #initialize, #member, #member_action, #resource_name, #resources_name

Constructor Details

This class inherits a constructor from Fulcrum::Resource

Instance Method Details

#attributes_for_upload(file, content_type = nil, attributes = {}) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/fulcrum/media_resource.rb', line 14

def attributes_for_upload(file, content_type = nil, attributes = {})
  attributes ||= {}

  file = Faraday::UploadIO.new(file, content_type || default_content_type)

  attributes[:file] = file
  attributes[:access_key] ||= new_access_key

  media_attributes = {}
  media_attributes[resource_name] = attributes
  media_attributes
end

#create(file, content_type = nil, attrs = {}) ⇒ Object



27
28
29
# File 'lib/fulcrum/media_resource.rb', line 27

def create(file, content_type = nil, attrs = {})
  call(:post, create_action, attributes_for_upload(file, content_type, attrs))
end

#default_content_typeObject

Raises:

  • (NotImplementedError)


9
10
11
12
# File 'lib/fulcrum/media_resource.rb', line 9

def default_content_type
  raise NotImplementedError,
    'default_content_type must be implemented in derived classes'
end

#download(url, &blk) ⇒ Object



31
32
33
# File 'lib/fulcrum/media_resource.rb', line 31

def download(url, &blk)
  open(url, "rb", &blk)
end

#download_version(access_key, version, &blk) ⇒ Object



35
36
37
# File 'lib/fulcrum/media_resource.rb', line 35

def download_version(access_key, version, &blk)
  download(find(access_key)[version], &blk)
end

#new_access_keyObject



43
44
45
# File 'lib/fulcrum/media_resource.rb', line 43

def new_access_key
  SecureRandom.uuid
end

#original(access_key, &blk) ⇒ Object



39
40
41
# File 'lib/fulcrum/media_resource.rb', line 39

def original(access_key, &blk)
  download_version(access_key, 'original', &blk)
end