diff options
author | Michael Manfre | 2022-11-22 23:53:02 -0500 |
---|---|---|
committer | GitHub | 2022-11-22 21:53:02 -0700 |
commit | f88efa40d497995a5f645d03f99345c804f808d7 (patch) | |
tree | 1989e2386dba401b2fed981120d779c399110556 /users/views | |
parent | 96f863d5d8ffa2a326a889eb6b0f8c4c11efb200 (diff) | |
download | takahe-f88efa40d497995a5f645d03f99345c804f808d7.tar.gz takahe-f88efa40d497995a5f645d03f99345c804f808d7.tar.bz2 takahe-f88efa40d497995a5f645d03f99345c804f808d7.zip |
Code dedupe Webfinger and fix SystemActor inbox URL
Diffstat (limited to 'users/views')
-rw-r--r-- | users/views/activitypub.py | 67 |
1 files changed, 25 insertions, 42 deletions
diff --git a/users/views/activitypub.py b/users/views/activitypub.py index 1ca80a1..2c7020a 100644 --- a/users/views/activitypub.py +++ b/users/views/activitypub.py @@ -99,51 +99,34 @@ class Webfinger(View): if not resource.startswith("acct:"): return HttpResponseBadRequest("Not an account resource") handle = resource[5:] + if handle.startswith("__system__@"): # They are trying to webfinger the system actor - system_actor = SystemActor() - return JsonResponse( - { - "subject": f"acct:{handle}", - "aliases": [ - system_actor.profile_uri, - ], - "links": [ - { - "rel": "http://webfinger.net/rel/profile-page", - "type": "text/html", - "href": system_actor.profile_uri, - }, - { - "rel": "self", - "type": "application/activity+json", - "href": system_actor.actor_uri, - }, - ], - } - ) + actor = SystemActor() else: - identity = by_handle_or_404(request, handle) - return JsonResponse( - { - "subject": f"acct:{identity.handle}", - "aliases": [ - identity.absolute_profile_uri(), - ], - "links": [ - { - "rel": "http://webfinger.net/rel/profile-page", - "type": "text/html", - "href": identity.absolute_profile_uri(), - }, - { - "rel": "self", - "type": "application/activity+json", - "href": identity.actor_uri, - }, - ], - } - ) + actor = by_handle_or_404(request, handle) + handle = actor.handle + + return JsonResponse( + { + "subject": f"acct:{handle}", + "aliases": [ + actor.absolute_profile_uri(), + ], + "links": [ + { + "rel": "http://webfinger.net/rel/profile-page", + "type": "text/html", + "href": actor.absolute_profile_uri(), + }, + { + "rel": "self", + "type": "application/activity+json", + "href": actor.actor_uri, + }, + ], + } + ) @method_decorator(csrf_exempt, name="dispatch") |