mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-12-28 12:29:40 -08:00
84 lines
2 KiB
JavaScript
84 lines
2 KiB
JavaScript
// GET https://${MASTODON_DOMAIN}/.well-known/webfinger?resource=acct:${MASTODON_USER}@${MASTODON_DOMAIN}
|
|
|
|
function trimPrefix(str, prefix) {
|
|
if (str.startsWith(prefix)) {
|
|
return str.slice(prefix.length)
|
|
}
|
|
return str
|
|
}
|
|
|
|
function webfinger(username) {
|
|
return {
|
|
"subject": `acct:${username}@hachyderm.io`,
|
|
"aliases": [
|
|
`https://hachyderm.io/@${username}`,
|
|
`https://hachyderm.io/users/${username}`
|
|
],
|
|
"links": [
|
|
{
|
|
"rel": "http://webfinger.net/rel/profile-page",
|
|
"type": "text/html",
|
|
"href": `https://hachyderm.io/@${username}`
|
|
},
|
|
{
|
|
"rel": "self",
|
|
"type": "application/activity+json",
|
|
"href": `https://hachyderm.io/users/${username}`
|
|
},
|
|
{
|
|
"rel": "http://ostatus.org/schema/1.0/subscribe",
|
|
"template": "https://hachyderm.io/authorize_interaction?uri={uri}"
|
|
}
|
|
]
|
|
};
|
|
}
|
|
|
|
module.exports = async function (context, req) {
|
|
context.log('Webfinger function processed a request');
|
|
|
|
try {
|
|
let resource = req.query.resource;
|
|
if (!resource) {
|
|
resource = "[email protected]";
|
|
}
|
|
|
|
resource = trimPrefix(resource, "acct:");
|
|
|
|
context.log(`Creating Mastodon user info for ${resource}`);
|
|
|
|
let body;
|
|
|
|
switch (resource) {
|
|
case "[email protected]":
|
|
body = webfinger("releasebot");
|
|
break;
|
|
case "[email protected]":
|
|
body = webfinger("jandedobbeleer");
|
|
break;
|
|
default:
|
|
context.log(`Unknown resource: ${resource}`);
|
|
context.res = {
|
|
body: "Unknown resource",
|
|
status: 400
|
|
};
|
|
return;
|
|
}
|
|
|
|
// return body as application/jrd+json
|
|
context.res = {
|
|
body: body,
|
|
headers: {
|
|
"Content-Type": "application/jrd+json"
|
|
}
|
|
};
|
|
} catch (error) {
|
|
context.log(error);
|
|
context.res = {
|
|
body: {
|
|
"message": (error.message) ? error.message : "unable to create webfinger"
|
|
},
|
|
status: 500
|
|
};
|
|
}
|
|
}
|