33 lines
895 B
TypeScript
33 lines
895 B
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
export async function POST(req: NextRequest) {
|
|
const token = req.cookies.get("token")?.value;
|
|
if (!token) {
|
|
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
}
|
|
|
|
const { method, url, body } = (await req.json()) as {
|
|
method: string;
|
|
url: string;
|
|
body?: unknown;
|
|
};
|
|
|
|
const targetUrl = url.startsWith("http")
|
|
? url
|
|
: `http://localhost:3001${url.startsWith("/") ? url : `/${url}`}`;
|
|
|
|
const res = await fetch(targetUrl, {
|
|
method,
|
|
headers: {
|
|
Authorization: `Bearer ${token}`,
|
|
...(body !== undefined ? { "Content-Type": "application/json" } : {}),
|
|
},
|
|
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
});
|
|
|
|
const text = await res.text();
|
|
return new NextResponse(text, {
|
|
status: res.status,
|
|
headers: { "Content-Type": res.headers.get("Content-Type") ?? "text/plain" },
|
|
});
|
|
}
|