2024-08-19 20:06:38 +02:00
|
|
|
import { apiRoute, applyConfig } from "@/api";
|
2024-05-29 02:59:49 +02:00
|
|
|
import { urlToContentFormat } from "@/content_types";
|
2024-08-26 19:06:49 +02:00
|
|
|
import type { InstanceMetadata } from "@versia/federation/types";
|
2024-05-29 02:59:49 +02:00
|
|
|
import pkg from "~/package.json";
|
|
|
|
|
import { config } from "~/packages/config-manager";
|
2023-11-04 04:34:31 +01:00
|
|
|
|
|
|
|
|
export const meta = applyConfig({
|
2024-04-07 07:30:49 +02:00
|
|
|
allowedMethods: ["GET"],
|
|
|
|
|
auth: {
|
|
|
|
|
required: false,
|
|
|
|
|
},
|
|
|
|
|
ratelimits: {
|
|
|
|
|
duration: 60,
|
|
|
|
|
max: 60,
|
|
|
|
|
},
|
2024-08-19 15:16:01 +02:00
|
|
|
route: "/.well-known/versia",
|
2023-11-04 04:34:31 +01:00
|
|
|
});
|
|
|
|
|
|
2024-08-19 20:06:38 +02:00
|
|
|
export default apiRoute((app) =>
|
2024-08-19 21:03:59 +02:00
|
|
|
app.on(meta.allowedMethods, meta.route, (context) => {
|
|
|
|
|
return context.json({
|
2024-08-26 19:06:49 +02:00
|
|
|
type: "InstanceMetadata",
|
|
|
|
|
compatibility: {
|
|
|
|
|
extensions: ["pub.versia:custom_emojis"],
|
2024-08-27 01:59:39 +02:00
|
|
|
versions: ["0.4.0"],
|
2024-08-26 19:06:49 +02:00
|
|
|
},
|
|
|
|
|
host: new URL(config.http.base_url).host,
|
2024-05-06 09:16:33 +02:00
|
|
|
name: config.instance.name,
|
2024-08-27 15:51:41 +02:00
|
|
|
description: config.instance.description,
|
2024-08-26 19:06:49 +02:00
|
|
|
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);
|
2024-08-19 20:06:38 +02:00
|
|
|
}),
|
|
|
|
|
);
|