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

Version Path
canvas_sync-0.11.1 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.16.5 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.16.4 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.16.3 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.16.2 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.16.1 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.15.1 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.15.0 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.14.0 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.13.0 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.12.0 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.11.0 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.10.6 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.10.5 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.10.4 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.10.3 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.10.2 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.10.0 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.9.4 lib/canvas_sync/jobs/report_checker.rb
canvas_sync-0.9.3 lib/canvas_sync/jobs/report_checker.rb