Sha256: 798bdf359029c6c5c6bd4db6a504ddd0147d22ac12e3a3921a012761358b20cb
Contents?: true
Size: 1.61 KB
Versions: 8
Compression:
Stored size: 1.61 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) report_status = CanvasSync.get_canvas_sync_client(job_chain[:global_options]).report_status('self', 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
8 entries across 8 versions & 1 rubygems