Refactor StatusReachFinder to be used in more places

This commit is contained in:
Eugen Rochko 2021-09-25 00:17:36 +02:00
parent c99d28369a
commit ce463ccb50
13 changed files with 321 additions and 99 deletions

View file

@ -5,21 +5,24 @@ class ActivityPub::InboxesController < ActivityPub::BaseController
include JsonLdHelper
include AccountOwnedConcern
before_action :skip_unknown_actor_activity
before_action :skip_unknown_actor_activity!
before_action :require_signature!
skip_before_action :authenticate_user!
ACCEPTED_HEADERS = %w(
Collection-Synchronization
).freeze
def create
upgrade_account
process_collection_synchronization
process_payload
head 202
head(:accepted)
end
private
def skip_unknown_actor_activity
head 202 if unknown_affected_account?
def skip_unknown_actor_activity!
head(:accepted) if unknown_affected_account?
end
def unknown_affected_account?
@ -57,20 +60,16 @@ class ActivityPub::InboxesController < ActivityPub::BaseController
DeliveryFailureTracker.reset!(signed_request_account.inbox_url)
end
def process_collection_synchronization
raw_params = request.headers['Collection-Synchronization']
return if raw_params.blank? || ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] == 'true'
# Re-using the syntax for signature parameters
tree = SignatureParamsParser.new.parse(raw_params)
params = SignatureParamsTransformer.new.apply(tree)
ActivityPub::PrepareFollowersSynchronizationService.new.call(signed_request_account, params)
rescue Parslet::ParseFailed
Rails.logger.warn 'Error parsing Collection-Synchronization header'
def process_payload
ActivityPub::ProcessingWorker.perform_async(
signed_request_account.id,
body,
@account&.id,
accepted_headers_from_request
)
end
def process_payload
ActivityPub::ProcessingWorker.perform_async(signed_request_account.id, body, @account&.id)
def accepted_headers_from_request
ACCEPTED_HEADERS.map { |header_name| [header_name, request.headers[header_name]] if request.headers[header_name].present? }.compact.to_h
end
end