Add specific rate limits for posting and following (#13172)

This commit is contained in:
Eugen Rochko
2020-03-08 15:17:39 +01:00
committed by GitHub
parent 503eab1c1f
commit 339ce1c4e9
23 changed files with 273 additions and 51 deletions

View File

@ -8,6 +8,8 @@ class ReblogService < BaseService
# @param [Account] account Account to reblog from
# @param [Status] reblogged_status Status to be reblogged
# @param [Hash] options
# @option [String] :visibility
# @option [Boolean] :with_rate_limit
# @return [Status]
def call(account, reblogged_status, options = {})
reblogged_status = reblogged_status.reblog if reblogged_status.reblog?
@ -18,9 +20,15 @@ class ReblogService < BaseService
return reblog unless reblog.nil?
visibility = options[:visibility] || account.user&.setting_default_privacy
visibility = reblogged_status.visibility if reblogged_status.hidden?
reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility)
visibility = begin
if reblogged_status.hidden?
reblogged_status.visibility
else
options[:visibility] || account.user&.setting_default_privacy
end
end
reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility, rate_limit: options[:with_rate_limit])
DistributionWorker.perform_async(reblog.id)
ActivityPub::DistributionWorker.perform_async(reblog.id)
@ -45,7 +53,9 @@ class ReblogService < BaseService
def bump_potential_friendship(account, reblog)
ActivityTracker.increment('activity:interactions')
return if account.following?(reblog.reblog.account_id)
PotentialFriendshipTracker.record(account.id, reblog.reblog.account_id, :reblog)
end