Olympus/frontend/athena/app/api/knowledge/[...path]/route.ts
2026-07-03 10:25:52 +02:00

51 lines
1.5 KiB
TypeScript

import { NextRequest } from "next/server";
import { assertSameOrigin } from "@/lib/server/request-guards";
import { proxyHermesRequest, proxyHermesStreamRequest } from "@/lib/server/hermes-proxy";
type Params = {
params: Promise<{
path: string[];
}>;
};
async function knowledgePath(request: NextRequest, context: Params) {
const { path } = await context.params;
return `/knowledge/${path.join("/")}${request.nextUrl.search}`;
}
function isDownloadPath(path: string) {
return /\/documents\/\d+\/download(?:\?|$)/.test(path);
}
export async function GET(request: NextRequest, context: Params) {
const path = await knowledgePath(request, context);
if (isDownloadPath(path)) {
return proxyHermesStreamRequest(request, path);
}
return proxyHermesRequest(request, path);
}
export async function POST(request: NextRequest, context: Params) {
const originError = assertSameOrigin(request);
if (originError) {
return originError;
}
return proxyHermesRequest(request, await knowledgePath(request, context));
}
export async function PUT(request: NextRequest, context: Params) {
const originError = assertSameOrigin(request);
if (originError) {
return originError;
}
return proxyHermesRequest(request, await knowledgePath(request, context));
}
export async function DELETE(request: NextRequest, context: Params) {
const originError = assertSameOrigin(request);
if (originError) {
return originError;
}
return proxyHermesRequest(request, await knowledgePath(request, context));
}