about summary refs log tree commit diff
path: root/app/workers/activitypub/status_update_distribution_worker.rb
blob: a79ede2bf61104e0348b06a79bcb986c7e6042e5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# frozen_string_literal: true

class ActivityPub::StatusUpdateDistributionWorker < ActivityPub::DistributionWorker
  # Distribute an profile update to servers that might have a copy
  # of the account in question
  def perform(status_id, options = {})
    @options = options.with_indifferent_access
    @status  = Status.find(status_id)
    @account = @status.account

    distribute!
  rescue ActiveRecord::RecordNotFound
    true
  end

  protected

  def activity
    ActivityPub::ActivityPresenter.new(
      id: [ActivityPub::TagManager.instance.uri_for(@status), '#updates/', @status.edited_at.to_i].join,
      type: 'Update',
      actor: ActivityPub::TagManager.instance.uri_for(@status.account),
      published: @status.edited_at,
      to: ActivityPub::TagManager.instance.to(@status),
      cc: ActivityPub::TagManager.instance.cc(@status),
      virtual_object: @status
    )
  end
end