about summary refs log tree commit diff
path: root/app/workers/pubsubhubbub/unsubscribe_worker.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-08-21 01:14:40 +0200
committerGitHub <noreply@github.com>2017-08-21 01:14:40 +0200
commit6e9eda53319bc970b085c7c55277981320b2a835 (patch)
tree443d418cf97adb66b330a8c6f2a809583db8b756 /app/workers/pubsubhubbub/unsubscribe_worker.rb
parent4c23544714c05258af8feab50da243039ddbefb6 (diff)
ActivityPub migration procedure (#4617)
* ActivityPub migration procedure

Once one account is detected as going from OStatus to ActivityPub,
invalidate WebFinger cache for other accounts from the same domain

* Unsubscribe from PuSH updates once we receive an ActivityPub payload

* Re-subscribe to PuSH unless already unsubscribed, regardless of protocol
Diffstat (limited to 'app/workers/pubsubhubbub/unsubscribe_worker.rb')
-rw-r--r--app/workers/pubsubhubbub/unsubscribe_worker.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/app/workers/pubsubhubbub/unsubscribe_worker.rb b/app/workers/pubsubhubbub/unsubscribe_worker.rb
new file mode 100644
index 000000000..a271715b7
--- /dev/null
+++ b/app/workers/pubsubhubbub/unsubscribe_worker.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class Pubsubhubbub::UnsubscribeWorker
+  include Sidekiq::Worker
+
+  sidekiq_options queue: 'push', retry: false, unique: :until_executed, dead: false
+
+  def perform(account_id)
+    account = Account.find(account_id)
+    logger.debug "PuSH unsubscribing from #{account.acct}"
+    ::UnsubscribeService.new.call(account)
+  rescue ActiveRecord::RecordNotFound
+    true
+  end
+end