class BrightcoveService::Ingest

Attributes

params[R]
result[R]

Public Class Methods

new(params) click to toggle source
# File lib/brightcove_service/ingest.rb, line 9
def initialize(params)
  @params = params.to_h
end

Public Instance Methods

call() click to toggle source
# File lib/brightcove_service/ingest.rb, line 13
def call
  valid? &&
    ingest_video
end

Private Instance Methods

audio_lang() click to toggle source
# File lib/brightcove_service/ingest.rb, line 51
def audio_lang
  params[:audio_tracks].collect do |_, tracks|
    { language: tracks['lang'] }
  end
end
audio_tracks() click to toggle source
# File lib/brightcove_service/ingest.rb, line 67
def audio_tracks
  params[:audio_tracks].collect do |_, tracks|
    {
      url: tracks['url'],
      language: tracks['lang'],
      variant: 'descriptive'
    }
  end
end
ingest_params() click to toggle source

rubocop:disable Metrics/AbcSize

# File lib/brightcove_service/ingest.rb, line 34
def ingest_params
  @ingest_params = { master: master_record }
  @ingest_params[:text_tracks] = text_tracks if params[:text_tracks]
  @ingest_params[:audio_tracks] = { masters: audio_tracks } if params[:audio_tracks]
  @ingest_params[:poster] = { url: params[:poster_url] } if params[:poster_url]
  @ingest_params[:thumbnail] = { url: params[:thumbnail_url] } if params[:thumbnail_url]
  @ingest_params
end
ingest_video() click to toggle source
# File lib/brightcove_service/ingest.rb, line 20
def ingest_video
  @result = BrightcoveService::Api.instance.ingest_video_and_assets(params[:video_id],
                                                                 ingest_params.to_json)
rescue StandardError => e
  add_error(e)
end
master_record() click to toggle source

rubocop:enable Metrics/AbcSize

# File lib/brightcove_service/ingest.rb, line 44
def master_record
  rec = { url: params[:master_url] }
  return rec if params[:audio_tracks].blank?
  rec[:audio_tracks] = audio_lang.uniq
  rec
end
text_tracks() click to toggle source
# File lib/brightcove_service/ingest.rb, line 57
def text_tracks
  params[:text_tracks].collect do |_, tracks|
    {
      url: tracks['url'],
      srclang: tracks['lang'],
      kind: 'subtitles'
    }
  end
end
validate_params() click to toggle source
# File lib/brightcove_service/ingest.rb, line 27
def validate_params
  return true if params[:video_id].present? && params[:master_url].present?
  errors.add(:base, 'invalid params, missing video_id or master_url')
  @result = { error: 'invalid params' }
end