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

Audio, 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



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

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



29
30
31
# File 'lib/fulcrum/media_resource.rb', line 29

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

#default_content_typeObject

Raises:

  • (NotImplementedError)


11
12
13
14
# File 'lib/fulcrum/media_resource.rb', line 11

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

#download(url, &blk) ⇒ Object



33
34
35
# File 'lib/fulcrum/media_resource.rb', line 33

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

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



37
38
39
40
41
42
43
44
45
# File 'lib/fulcrum/media_resource.rb', line 37

def download_version(access_key, version, &blk)
  media = find(access_key)

  unless media[version]
    raise Fulcrum::MediaNotAvailableError, "The #{resource_name} version you requested is not available."
  end

  download(media[version], &blk)
end

#new_access_keyObject



51
52
53
# File 'lib/fulcrum/media_resource.rb', line 51

def new_access_key
  SecureRandom.uuid
end

#original(access_key, &blk) ⇒ Object



47
48
49
# File 'lib/fulcrum/media_resource.rb', line 47

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