From f902c144a5747b7932fad81abebb42b0f9624175 Mon Sep 17 00:00:00 2001 From: SouthFox Date: Mon, 10 Jul 2023 23:48:07 +0800 Subject: [PATCH] [doc] add webfinger demo --- docs/show.org | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/docs/show.org b/docs/show.org index 5851228..3eaf596 100644 --- a/docs/show.org +++ b/docs/show.org @@ -47,3 +47,47 @@ GET http://coscup.localhost/.well-known/nodeinfo GET http://coscup.localhost/nodeinfo/2.0 #+end_src +** WebFinger +#+begin_src python +from flask import Flask, abort, request, Response, jsonify +from config import USERNAME, DOMAIN, ID +#USERNAME = "show" +#DOMAIN = "coscup.localhost" +#ID = f"http://{DOMAIN}/meow/{USERNAME}" + +@app.route("/.well-known/webfinger") +def wellknown_webfinger() -> Response: + """Exposes servers WebFinger data.""" + resource = request.args.get("resource") + + if resource not in [f"acct:{USERNAME}@{DOMAIN}", config.ID]: + abort(404) + + resp = jsonify( + { + "subject": f"acct:{config.USERNAME}@{config.DOMAIN}", + "aliases": [config.ID], + "links": [ + { + "rel": "http://webfinger.net/rel/profile-page", + "type": "text/html", + "href": config.ID, + }, + { + "rel": "self", + "type": "application/activity+json", + "href": config.ID, + }, + ], + }, + ) + resp.headers["Access-Control-Allow-Origin"] = "*" + resp.headers["Content-Type"] = "application/jrd+json; charset=utf-8" + + return resp +#+end_src + + +#+begin_src restclient +GET http://coscup.localhost/.well-known/webfinger?resource=acct:show@coscup.localhost +#+end_src