status_update_distribution_worker.rb 900 B

1234567891011121314151617181920212223242526272829
  1. # frozen_string_literal: true
  2. class ActivityPub::StatusUpdateDistributionWorker < ActivityPub::DistributionWorker
  3. # Distribute an profile update to servers that might have a copy
  4. # of the account in question
  5. def perform(status_id, options = {})
  6. @options = options.with_indifferent_access
  7. @status = Status.find(status_id)
  8. @account = @status.account
  9. distribute!
  10. rescue ActiveRecord::RecordNotFound
  11. true
  12. end
  13. protected
  14. def activity
  15. ActivityPub::ActivityPresenter.new(
  16. id: [ActivityPub::TagManager.instance.uri_for(@status), '#updates/', @status.edited_at.to_i].join,
  17. type: 'Update',
  18. actor: ActivityPub::TagManager.instance.uri_for(@status.account),
  19. published: @status.edited_at,
  20. to: ActivityPub::TagManager.instance.to(@status),
  21. cc: ActivityPub::TagManager.instance.cc(@status),
  22. virtual_object: @status
  23. )
  24. end
  25. end