module DmCloud::Builder::Media

Public Class Methods

create(url = '', assets_names = [], meta = {}) click to toggle source
# File lib/dm_cloud/builder/media.rb, line 4
def self.create(url = '', assets_names = [], meta = {})
  request = Hash.new

  request['url'] = url

  if not meta.empty?
    request['meta'] = {}
    request['meta']['author'] = meta[:author] if meta[:author]
    request['meta']['author'] = meta[:title] if meta[:title]
  end

  request['assets_names'] = assets_names if not assets_names.empty?

  request.rehash
end
info(media_id, assets_names = ['source'], fields = {}, authToken = false) click to toggle source
# File lib/dm_cloud/builder/media.rb, line 20
def self.info(media_id, assets_names = ['source'], fields = {}, authToken = false)
  raise StandardError, "missing :media_id in params" unless media_id
  request = Hash.new

  # the media id
  request[:id] = media_id

  # requested media meta datas
  request[:fields] = []
  fields[:meta] = ['title'] unless fields[:meta]
  fields[:meta].each { |value| request[:fields] << "meta.#{value.to_s}" }
  if not authToken
    request[:fields] += ['id', 'created', 'embed_url', 'frame_ratio']
  end
  # the worldwide statistics on the number of views
  # request['fields'] << 'stats.global.last_week' if fields[:stats][:global]
  # request['fields'] << 'assets.all.progress'

  # TODO: handle statistics request per country
  # fields[:stats].each { |key| request << "meta.#{key.to_s}" } if fields[:meta].present?
  # request['stats'][COUNTRY_CODE][TIME_INTERVAL] : the statistics on the number of views in a specific country (eg: stats.fr.total, stats.us.last_week, etc...)
  # request['extended_stats'][COUNTRY_CODE][TIME_INTERVAL]

  assets_names = ['source'] if assets_names.nil?
  if not fields[:assets]
    request = all_assets_fields(request, assets_names)
  else
    assets_names.each do |name|
      fields[:assets].each { |value| request[:fields] << "assets.#{name}.#{value.to_s}" }
    end
  end
  request
end
list(page = 1, per_page = 10, fields = {}) click to toggle source
# File lib/dm_cloud/builder/media.rb, line 54
def self.list(page = 1, per_page = 10, fields = {})
  # raise StandardError, "missing :media_id in params" unless media_id
  request = Hash.new

  request[:page] = page
  request[:per_page] = per_page
  request[:fields] = []
  # requested media meta datas
  fields[:meta] = ['title'] unless fields[:meta]
  fields[:meta].each { |value| request[:fields] << "meta.#{value.to_s}" }
  request[:fields] += ['id', 'created', 'embed_url', 'frame_ratio']

  # TODO: handle global statistics request in another module
  # the worldwide statistics on the number of views
  # request << 'stats.global.last_week' if fields[:stats][:global]

  # TODO: handle statistics request per country
  # fields[:stats].each { |key| request << "meta.#{key.to_s}" } if fields[:meta].present?
  # request['stats'][COUNTRY_CODE][TIME_INTERVAL] : the statistics on the number of views in a specific country (eg: stats.fr.total, stats.us.last_week, etc...)
  # request['extended_stats'][COUNTRY_CODE][TIME_INTERVAL]

  assets_names = ['source'] if assets_names.nil?
  if not fields[:assets]
    request = all_assets_fields(request, assets_names)
  else
    assets_names.each do |name|
      fields[:assets].each { |value| request[:fields] << "assets.#{name}.#{value.to_s}" }
    end
  end

  request
end

Protected Class Methods

all_assets_fields(request, assets_names) click to toggle source

This method exclude stats, but return all information for a media (video or images) NOTE: This is outside the methods because : too long and recurent.

It's also used as default if no fields params is submitted.
# File lib/dm_cloud/builder/media.rb, line 92
def self.all_assets_fields(request, assets_names)
  assets_names.each do |name|
    request[:fields] << "assets.#{name}.download_url"
    request[:fields] << "assets.#{name}.status"
    request[:fields] << "assets.#{name}.container"
    request[:fields] << "assets.#{name}.duration"
    request[:fields] << "assets.#{name}.global_bitrate"
    request[:fields] << "assets.#{name}.video_codec"
    request[:fields] << "assets.#{name}.video_width"
    request[:fields] << "assets.#{name}.video_height"
    request[:fields] << "assets.#{name}.video_bitrate"
    request[:fields] << "assets.#{name}.video_rotation"
    request[:fields] << "assets.#{name}.video_fps"
    request[:fields] << "assets.#{name}.video_fps_mode"
    request[:fields] << "assets.#{name}.video_aspect"
    request[:fields] << "assets.#{name}.video_interlaced"
    request[:fields] << "assets.#{name}.audio_codec"
    request[:fields] << "assets.#{name}.audio_bitrate"
    request[:fields] << "assets.#{name}.audio_nbr_channel"
    request[:fields] << "assets.#{name}.audio_samplerate"
    request[:fields] << "assets.#{name}.created"
    request[:fields] << "assets.#{name}.file_extension"
    request[:fields] << "assets.#{name}.file_size"
    request[:fields] << "assets.#{name}.progress"
  end
  request
end