diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-08-12 18:16:26 +0200 |
---|---|---|
committer | ThibG <thib@sitedethib.com> | 2018-08-13 18:17:20 +0200 |
commit | 434628d98f07d5b95dc04940ac499f107d1a5d12 (patch) | |
tree | 95cfa2960b3c58b0e2bddfb225edc306f4482978 /app/lib | |
parent | 5f41bbd274bb771a712ee7d38df6d1ec47c26212 (diff) |
Expect relays to answer with accept/reject (#8179)
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/activitypub/activity/accept.rb | 14 | ||||
-rw-r--r-- | app/lib/activitypub/activity/reject.rb | 14 |
2 files changed, 28 insertions, 0 deletions
diff --git a/app/lib/activitypub/activity/accept.rb b/app/lib/activitypub/activity/accept.rb index bd90c9019..7e60b2c00 100644 --- a/app/lib/activitypub/activity/accept.rb +++ b/app/lib/activitypub/activity/accept.rb @@ -11,6 +11,8 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity private def accept_follow + return accept_follow_for_relay if relay_follow? + target_account = account_from_uri(target_uri) return if target_account.nil? || !target_account.local? @@ -19,6 +21,18 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity follow_request&.authorize! end + def accept_follow_for_relay + relay.update!(state: :accepted) + end + + def relay + @relay ||= Relay.find_by(follow_activity_id: object_uri) + end + + def relay_follow? + relay.present? + end + def target_uri @target_uri ||= value_or_id(@object['actor']) end diff --git a/app/lib/activitypub/activity/reject.rb b/app/lib/activitypub/activity/reject.rb index 28d472883..d81b157de 100644 --- a/app/lib/activitypub/activity/reject.rb +++ b/app/lib/activitypub/activity/reject.rb @@ -11,6 +11,8 @@ class ActivityPub::Activity::Reject < ActivityPub::Activity private def reject_follow + return reject_follow_for_relay if relay_follow? + target_account = account_from_uri(target_uri) return if target_account.nil? || !target_account.local? @@ -21,6 +23,18 @@ class ActivityPub::Activity::Reject < ActivityPub::Activity UnfollowService.new.call(target_account, @account) if target_account.following?(@account) end + def reject_follow_for_relay + relay.update!(state: :rejected) + end + + def relay + @relay ||= Relay.find_by(follow_activity_id: object_uri) + end + + def relay_follow? + relay.present? + end + def target_uri @target_uri ||= value_or_id(@object['actor']) end |