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

Version Path
canvas_sync-0.3.12 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.3.11 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.3.10 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.3.9 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.3.8 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.3.7 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.3.6 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.3.5 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.3.3 lib/canvas_sync/jobs/report_checker.rb