Sha256: 6cecc819e40b5dad65c886814c12108c055326f6548fbd2101b4d9cd68a08fcf
Contents?: true
Size: 1.7 KB
Versions: 9
Compression:
Stored size: 1.7 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) 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 ) when 'error', 'deleted' message = "Report failed to process; status was #{report_status} for report_name: #{report_name}, report_id: #{report_id}" 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
9 entries across 9 versions & 1 rubygems