diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-08-29 16:11:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-29 16:11:05 +0200 |
commit | 4c76402ba1d355061e7e208b7a2f8251388a38e1 (patch) | |
tree | f76f71be7326e16ccaeaf74402f36c79973b734b /app/workers | |
parent | 9958eba356210f1d0b89db368e17bbd72358e097 (diff) |
Serialize ActivityPub alternate link into OStatus deletes, handle it (#4730)
Requires moving Atom rendering from DistributionWorker (where `stream_entry.status` is already nil) to inline (where `stream_entry.status.destroyed?` is true) and distributing that. Unfortunately, such XML renderings can no longer be easily chained together into one payload of n items.
Diffstat (limited to 'app/workers')
-rw-r--r-- | app/workers/pubsubhubbub/raw_distribution_worker.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/workers/pubsubhubbub/raw_distribution_worker.rb b/app/workers/pubsubhubbub/raw_distribution_worker.rb new file mode 100644 index 000000000..16962a623 --- /dev/null +++ b/app/workers/pubsubhubbub/raw_distribution_worker.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class Pubsubhubbub::RawDistributionWorker + include Sidekiq::Worker + + sidekiq_options queue: 'push' + + def perform(xml, source_account_id) + @account = Account.find(source_account_id) + @subscriptions = active_subscriptions.to_a + + Pubsubhubbub::DeliveryWorker.push_bulk(@subscriptions) do |subscription| + [subscription.id, xml] + end + end + + private + + def active_subscriptions + Subscription.where(account: @account).active.select('id, callback_url, domain') + end +end |