module CanvasSync module Jobs # Starts a Canvas report and enqueues a ReportChecker class ReportStarter < ApplicationJob # @param canvas_base_url [String] # @param canvas_api_token [String] # @param job_chain [Hash] # @param report_name [Hash] e.g., 'provisioning_csv' # @param report_params [Hash] The Canvas report parameters # @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(canvas_base_url, canvas_api_token, job_chain, report_name, report_params, processor, options) client = canvas_client(canvas_base_url, canvas_api_token) report = client.start_report('self', report_name, report_params) CanvasSync::Jobs::ReportChecker.set(wait: report_checker_wait_time).perform_later( canvas_base_url, canvas_api_token, job_chain, report_name, report['id'], processor, options ) end end end end