server/api/well-known/versia.ts

44 lines
1.3 KiB
TypeScript
Raw Normal View History

import { apiRoute, applyConfig } from "@/api";
import { urlToContentFormat } from "@/content_types";
import type { InstanceMetadata } from "@versia/federation/types";
import pkg from "~/package.json";
import { config } from "~/packages/config-manager";
export const meta = applyConfig({
2024-04-07 07:30:49 +02:00
allowedMethods: ["GET"],
auth: {
required: false,
},
ratelimits: {
duration: 60,
max: 60,
},
route: "/.well-known/versia",
});
export default apiRoute((app) =>
app.on(meta.allowedMethods, meta.route, (context) => {
return context.json({
type: "InstanceMetadata",
compatibility: {
extensions: ["pub.versia:custom_emojis"],
versions: ["0.4.0"],
},
host: new URL(config.http.base_url).host,
name: config.instance.name,
description: config.instance.description,
public_key: {
key: config.instance.keys.public,
algorithm: "ed25519",
},
software: {
name: "Versia Server",
version: pkg.version,
},
banner: urlToContentFormat(config.instance.banner),
logo: urlToContentFormat(config.instance.logo),
created_at: "2021-10-01T00:00:00Z",
} satisfies InstanceMetadata);
}),
);