class Fulcrum::MediaResource

Public Instance Methods

attributes_for_upload(file, content_type = nil, attributes = {}) click to toggle source
# 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 = {}) click to toggle source
# 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_type() click to toggle source
# 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) click to toggle source
# File lib/fulcrum/media_resource.rb, line 33
def download(url, &blk)
  open(url, "rb", &blk)
end
download_version(access_key, version, &blk) click to toggle source
# 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_key() click to toggle source
# File lib/fulcrum/media_resource.rb, line 51
def new_access_key
  SecureRandom.uuid
end
original(access_key, &blk) click to toggle source
# File lib/fulcrum/media_resource.rb, line 47
def original(access_key, &blk)
  download_version(access_key, 'original', &blk)
end