diff options
author | puckipedia <puck@puckipedia.com> | 2019-10-24 20:45:43 +0000 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2019-10-24 22:45:43 +0200 |
commit | d2919f7e94a22971fb368f614ecccce2b055d231 (patch) | |
tree | 4f3cf946672ce54be3ce017dc50a3308908739af /app/lib/activitypub/activity/reject.rb | |
parent | bd684e25d9ddb77e396e28a39ff221e9db28e608 (diff) |
Allow Accept/Reject with a non-embedded object (#12199)
Some ActivityPub servers refuse to embed remote objects into their own output. This is because they are not the authoritative source for these objects, and as such embedding them is always a waste of space. The follow request and follow models contain a URI, so this can be used to match them.
Diffstat (limited to 'app/lib/activitypub/activity/reject.rb')
-rw-r--r-- | app/lib/activitypub/activity/reject.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/app/lib/activitypub/activity/reject.rb b/app/lib/activitypub/activity/reject.rb index dba21fb9a..8d771ed81 100644 --- a/app/lib/activitypub/activity/reject.rb +++ b/app/lib/activitypub/activity/reject.rb @@ -2,17 +2,19 @@ class ActivityPub::Activity::Reject < ActivityPub::Activity def perform + return reject_follow_for_relay if relay_follow? + return follow_request_from_object.reject! unless follow_request_from_object.nil? + return UnfollowService.new.call(follow_from_object.target_account, @account) unless follow_from_object.nil? + case @object['type'] when 'Follow' - reject_follow + reject_embedded_follow end end private - def reject_follow - return reject_follow_for_relay if relay_follow? - + def reject_embedded_follow target_account = account_from_uri(target_uri) return if target_account.nil? || !target_account.local? |