# frozen_string_literal: true

module Jobs

  class ProcessEmail < ::Jobs::Base
    sidekiq_options retry: 3

    def execute(args)
      Email::Processor.process!(
        args[:mail],
        retry_on_rate_limit: args[:retry_on_rate_limit] || false,
        source: args[:source]&.to_sym
      )
    end

    sidekiq_retries_exhausted do |msg|
      Rails.logger.warn("Incoming email could not be processed after 3 retries.\n\n#{msg["args"][:mail]}")
    end

  end

end