From 1837a6feb4903870b1e8d64c87f7460ef8e96587 Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Tue, 19 Nov 2024 14:41:12 +0100 Subject: [PATCH] fix(federation): :bug: Make nodeinfo correctly return JSON instead of redirect --- api/well-known/nodeinfo/index.ts | 36 +++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/api/well-known/nodeinfo/index.ts b/api/well-known/nodeinfo/index.ts index 4bc333ed..d0845ffc 100644 --- a/api/well-known/nodeinfo/index.ts +++ b/api/well-known/nodeinfo/index.ts @@ -1,5 +1,5 @@ import { apiRoute, applyConfig } from "@/api"; -import { createRoute } from "@hono/zod-openapi"; +import { createRoute, z } from "@hono/zod-openapi"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -18,20 +18,36 @@ const route = createRoute({ path: "/.well-known/nodeinfo", summary: "Well-known nodeinfo", responses: { - 301: { - description: "Redirect to 2.0 Nodeinfo", + 200: { + description: "Nodeinfo links", + content: { + "application/json": { + schema: z.object({ + links: z.array( + z.object({ + rel: z.string(), + href: z.string(), + }), + ), + }), + }, + }, }, }, }); export default apiRoute((app) => app.openapi(route, (context) => { - return context.redirect( - new URL( - "/.well-known/nodeinfo/2.0", - config.http.base_url, - ).toString(), - 301, - ); + return context.json({ + links: [ + { + rel: "http://nodeinfo.diaspora.software/ns/schema/2.0", + href: new URL( + "/.well-known/nodeinfo/2.0", + config.http.base_url, + ).toString(), + }, + ], + }); }), );