2017-05-04 17:23:01 -07:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
class Pubsubhubbub::SubscribeWorker
|
|
|
|
include Sidekiq::Worker
|
|
|
|
|
2017-09-14 06:12:43 -07:00
|
|
|
sidekiq_options queue: 'push', retry: 10, unique: :until_executed, dead: false
|
2017-07-10 09:04:23 -07:00
|
|
|
|
|
|
|
sidekiq_retry_in do |count|
|
|
|
|
case count
|
|
|
|
when 0
|
|
|
|
30.minutes.seconds
|
|
|
|
when 1
|
|
|
|
2.hours.seconds
|
|
|
|
when 2
|
|
|
|
12.hours.seconds
|
|
|
|
else
|
|
|
|
24.hours.seconds * (count - 2)
|
|
|
|
end
|
|
|
|
end
|
2017-05-04 17:23:01 -07:00
|
|
|
|
2017-07-28 08:21:14 -07:00
|
|
|
sidekiq_retries_exhausted do |msg, _e|
|
|
|
|
account = Account.find(msg['args'].first)
|
|
|
|
logger.error "PuSH subscription attempts for #{account.acct} exhausted. Unsubscribing"
|
|
|
|
::UnsubscribeService.new.call(account)
|
|
|
|
end
|
|
|
|
|
2017-05-04 17:23:01 -07:00
|
|
|
def perform(account_id)
|
|
|
|
account = Account.find(account_id)
|
2017-05-06 04:05:03 -07:00
|
|
|
logger.debug "PuSH re-subscribing to #{account.acct}"
|
2017-05-04 17:23:01 -07:00
|
|
|
::SubscribeService.new.call(account)
|
2017-07-26 15:38:20 -07:00
|
|
|
rescue => e
|
|
|
|
raise e.class, "Subscribe failed for #{account&.acct}: #{e.message}"
|
2017-05-04 17:23:01 -07:00
|
|
|
end
|
|
|
|
end
|