diff options
author | Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> | 2018-01-04 02:08:57 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2018-01-03 18:08:57 +0100 |
commit | 161c72d66d25bb8f5ff492e36a8521c701ab8afc (patch) | |
tree | d57b674958a4353bba0cf91ba4197748a66fc2f5 /app/lib/activitypub/activity | |
parent | 53d99ebf4f54c25fa58709e9dc05730479ea7d02 (diff) |
Allow to dereference Follow object for ActivityPub (#5772)
* Allow to dereference Follow object for ActivityPub * Accept IRI as object representation for Accept activity
Diffstat (limited to 'app/lib/activitypub/activity')
-rw-r--r-- | app/lib/activitypub/activity/accept.rb | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/app/lib/activitypub/activity/accept.rb b/app/lib/activitypub/activity/accept.rb index bd90c9019..d0082483c 100644 --- a/app/lib/activitypub/activity/accept.rb +++ b/app/lib/activitypub/activity/accept.rb @@ -2,16 +2,18 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity def perform - case @object['type'] - when 'Follow' - accept_follow + if @object.respond_to?(:[]) && + @object['type'] == 'Follow' && @object['actor'].present? + accept_follow_from @object['actor'] + else + accept_follow_object @object end end private - def accept_follow - target_account = account_from_uri(target_uri) + def accept_follow_from(actor) + target_account = account_from_uri(value_or_id(actor)) return if target_account.nil? || !target_account.local? @@ -19,7 +21,8 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity follow_request&.authorize! end - def target_uri - @target_uri ||= value_or_id(@object['actor']) + def accept_follow_object(object) + follow_request = ActivityPub::TagManager.instance.uri_to_resource(value_or_id(object), FollowRequest) + follow_request&.authorize! end end |