add basic nodeinfo 2.0
This commit is contained in:
parent
ca724dab9a
commit
0fc002b399
2 changed files with 55 additions and 0 deletions
35
src/routes/nodeinfo/nodeinfo_2.0.ts
Normal file
35
src/routes/nodeinfo/nodeinfo_2.0.ts
Normal 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;
|
20
src/routes/well-known/nodeinfo.ts
Normal file
20
src/routes/well-known/nodeinfo.ts
Normal 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;
|
Loading…
Reference in a new issue