Sha256: 86c5d4801a66cfacba927bcf7041a9a30fcd011cf5d6b97027a4172f2f937093
Contents?: true
Size: 1.81 KB
Versions: 32
Compression:
Stored size: 1.81 KB
Contents
module CanvasSync module Jobs # ActiveJob class used to check the status of a pending Canvas report. # Re-enqueues itself if the report is still processing on Canvas. # Enqueues the ReportProcessor when the report has completed. class ReportChecker < CanvasSync::Job # @param job_chain [Hash] # @param report_name [Hash] e.g., 'provisioning_csv' # @param report_id [Integer] # @param processor [String] a stringified report processor class name # @param options [Hash] hash of options that will be passed to the job processor # @return [nil] def perform(job_chain, report_name, report_id, processor, options) # rubocop:disable Metrics/AbcSize account_id = options[:account_id] || job_chain[:global_options][:account_id] || "self" report_status = CanvasSync.get_canvas_sync_client(job_chain[:global_options]) .report_status(account_id, report_name, report_id) case report_status["status"].downcase when "complete" CanvasSync::Jobs::ReportProcessorJob.perform_later( job_chain, report_name, report_status["attachment"]["url"], processor, options, report_id, ) when "error", "deleted" message = "Report failed to process; status was #{report_status} for report_name: #{report_name}, report_id: #{report_id}" # rubocop:disable Metrics/LineLength Rails.logger.error(message) raise message else CanvasSync::Jobs::ReportChecker .set(wait: report_checker_wait_time) .perform_later( job_chain, report_name, report_id, processor, options, ) end end end end end
Version data entries
32 entries across 32 versions & 1 rubygems