summaryrefslogtreecommitdiffstats
path: root/users/views
diff options
context:
space:
mode:
authorMichael Manfre2022-11-22 23:53:02 -0500
committerGitHub2022-11-22 21:53:02 -0700
commitf88efa40d497995a5f645d03f99345c804f808d7 (patch)
tree1989e2386dba401b2fed981120d779c399110556 /users/views
parent96f863d5d8ffa2a326a889eb6b0f8c4c11efb200 (diff)
downloadtakahe-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.py67
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")