Class: Nuntius::TransportRefreshJob

Inherits:
ApplicationJob show all
Defined in:
app/jobs/nuntius/transport_refresh_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(provider_name, message) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'app/jobs/nuntius/transport_refresh_job.rb', line 6

def perform(provider_name, message)
  return if message.delivered_or_blocked? || message.refreshes >= 3

  provider = Nuntius::BaseProvider.class_from_name(provider_name, message.transport).new(message)
  message = provider.refresh
  # FIXME: This may need to be more atomic
  message.refreshes += 1
  message.save!

  if message.delivered_or_blocked?
    message.cleanup!
  else
    Nuntius::TransportRefreshJob.set(wait: message.refreshes + 5).perform_later(provider_name, message)
  end
end