class Videos::DispatchCallbackService < ApplicationService
  attr_reader :video, :params

  def initialize(params)
    @video  = Video.find_by(uuid: params[:VideoId])
    @params = params
  end

  def call
    return if video.blank?

    # TODO:: 拆分事件分发
    case params['EventType']
    when 'FileUploadComplete' then # 视频上传完成
      video.file_url = params['FileUrl']
      video.filesize = params['Size']
      video.upload_success
      video.save!
    when 'SnapshotComplete' then # 封面截图完成
      return if video.cover_url.present?

      video.update!(cover_url: params['CoverUrl'])
    end

  rescue => ex
    Util.logger_error(ex)
  end
end