Sha256: 3f3a51c7f7f83f2f1b34c06b00ef397d8d268fb6471b4cbb9cf95f051b4df5e1

Contents?: true

Size: 1.6 KB

Versions: 19

Compression:

Stored size: 1.6 KB

Contents

module Pageflow
  class PollZencoderJob
    @queue = :resizing

    extend StateMachineJob

    def self.perform_with_result(file, options, api = ZencoderApi.instance)
      options ||= {}

      result = catch(:halt) do
        poll_zencoder(file, api)
        fetch_input_details(file, api)
        fetch_thumbnail(file) unless options[:skip_thumbnail]

        :ok
      end
    ensure
      file.save!
    end

    private

    def self.poll_zencoder(file, api)
      info = api.get_info(file.job_id)

      file.encoding_progress = info[:finished] ? 100 : info[:progress];
      file.encoding_error_message = nil

      if info[:state] === 'failed'
        throw(:halt, :error)
      elsif !info[:finished]
        throw(:halt, :pending)
      end
    rescue ZencoderApi::RecoverableError => e
      file.encoding_error_message = e.message
      throw(:halt, :pending)
    rescue ZencoderApi::Error => e
      file.encoding_error_message = e.message
      raise
    end

    def self.fetch_thumbnail(file)
      return unless file.respond_to?(:thumbnail)
      file.thumbnail = URI.parse(file.zencoder_thumbnail.url(default_protocol: 'http'))
      file.poster = URI.parse(file.zencoder_poster.url(default_protocol: 'http'))
    rescue OpenURI::HTTPError
      throw(:halt, :pending)
    end

    def self.fetch_input_details(file, api)
      file.meta_data_attributes = api.get_input_details(file.job_id)
    rescue ZencoderApi::RecoverableError => e
      file.encoding_error_message = e.message
      throw(:halt, :pending)
    rescue ZencoderApi::Error => e
      file.encoding_error_message = e.message
      raise
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
pageflow-0.11.4 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.11.3 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.11.2 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.11.1 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.11.0 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.10.0 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.9.2 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.9.1 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.9.0 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.8.2 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.8.1 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.8.0 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.7.2 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.7.1 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.7.0 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.6.0 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.5.0 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.4.0 app/jobs/pageflow/poll_zencoder_job.rb
pageflow-0.3.0 app/jobs/pageflow/poll_zencoder_job.rb