Refactor StatusReachFinder to be used in more places
This commit is contained in:
parent
c99d28369a
commit
ce463ccb50
13 changed files with 321 additions and 99 deletions
|
@ -1,13 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub::PrepareFollowersSynchronizationService < BaseService
|
||||
include JsonLdHelper
|
||||
|
||||
def call(account, params)
|
||||
@account = account
|
||||
|
||||
return if params['collectionId'] != @account.followers_url || invalid_origin?(params['url']) || @account.local_followers_hash == params['digest']
|
||||
|
||||
ActivityPub::FollowersSynchronizationWorker.perform_async(@account.id, params['url'])
|
||||
end
|
||||
end
|
|
@ -0,0 +1,36 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub::ProcessCollectionSynchronizationService < BaseService
|
||||
include JsonLdHelper
|
||||
|
||||
def call(account, value)
|
||||
return unless collection_synchronization_enabled?
|
||||
|
||||
@account = account
|
||||
@params = parse_value(value)
|
||||
|
||||
return if unknown_collection? || collection_up_to_date?
|
||||
|
||||
ActivityPub::FollowersSynchronizationWorker.perform_async(@account.id, @params['url'])
|
||||
rescue Parslet::ParseFailed
|
||||
Rails.logger.warn 'Error parsing Collection-Synchronization header'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def parse_value(value)
|
||||
SignatureVerification::SignatureParamsTransformer.new.apply(SignatureVerification::SignatureParamsParser.new.parse(value))
|
||||
end
|
||||
|
||||
def unknown_collection?
|
||||
@params['collectionId'] != @account.followers_url || invalid_origin?(@params['url'])
|
||||
end
|
||||
|
||||
def collection_up_to_date?
|
||||
@account.local_followers_hash == @params['digest']
|
||||
end
|
||||
|
||||
def collection_synchronization_enabled?
|
||||
ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] != 'true'
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue