add basic nodeinfo 2.0

This commit is contained in:
sam 2023-07-21 03:12:00 +02:00
parent ca724dab9a
commit 0fc002b399
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
2 changed files with 55 additions and 0 deletions

View file

@ -0,0 +1,35 @@
import { RouteOptions } from "fastify";
import { IsNull } from "typeorm";
import MercuryDataSource from "~/db/index.js";
import { Blog } from "~/db/entities/blog.js";
import { Post } from "~/db/entities/post.js";
const route: RouteOptions = {
method: "GET",
url: "/nodeinfo/2.0",
handler: async (_, res) => {
const userCount = await MercuryDataSource.getRepository(Blog).countBy({
host: IsNull(),
});
const postCount = await MercuryDataSource.getRepository(Post).count({
relations: { blog: true },
where: { blog: { host: IsNull() } },
});
res.send({
version: "2.0",
software: { name: "mercury", version: "0.1.0-dev" },
protocols: ["activitypub"],
openRegistrations: false, // TODO: get from database
usage: {
users: {
total: userCount,
},
localPosts: postCount,
},
});
},
};
export default route;

View file

@ -0,0 +1,20 @@
import { RouteOptions } from "fastify";
import { BASE_URL } from "~/config.js";
const route: RouteOptions = {
method: "GET",
url: "/.well-known/nodeinfo",
handler: async (_, res) => {
res.send({
links: [
{
href: `${BASE_URL}/nodeinfo/2.0`,
rel: "http://nodeinfo.diaspora.software/ns/schema/2.0",
},
],
});
},
};
export default route;