add basic webfinger support, good enough for now
authorWilliam Pitcock <nenolod@dereferenced.org>
Fri, 10 Aug 2018 20:15:02 +0000 (15:15 -0500)
committerWilliam Pitcock <nenolod@dereferenced.org>
Fri, 10 Aug 2018 20:15:02 +0000 (15:15 -0500)
viera/__init__.py
viera/webfinger.py [new file with mode: 0644]

index c32462d..71b7c2a 100644 (file)
@@ -20,3 +20,5 @@ app = aiohttp.web.Application()
 
 from . import database
 from . import actor
+from . import webfinger
+
diff --git a/viera/webfinger.py b/viera/webfinger.py
new file mode 100644 (file)
index 0000000..71e172a
--- /dev/null
@@ -0,0 +1,24 @@
+import aiohttp.web
+from . import app
+
+
+async def webfinger(request):
+    subject = request.query['resource']
+
+    if subject != 'acct:viera@{}'.format(request.host):
+        return aiohttp.web.json_response({'error': 'user not found'}, status=404)
+
+    actor_uri = "https://{}/actor".format(request.host)
+    data = {
+        "aliases": [actor_uri],
+        "links": [
+            {"href": actor_uri, "rel": "self", "type": "application/activity+json"},
+            {"href": actor_uri, "rel": "self", "type": "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""}
+        ],
+        "subject": subject
+    }
+
+    return aiohttp.web.json_response(data)
+
+
+app.router.add_get('/.well-known/webfinger', webfinger)