fix(analytics): create actual route handler for OpenPanel track endpoint
Build and Deploy / build (push) Has been cancelled
Build and Deploy / build (push) Has been cancelled
The standalone build doesn't support rewrites - need actual route handler to proxy OpenPanel API requests.
This commit is contained in:
@@ -34,10 +34,6 @@ const nextConfig: NextConfig = {
|
|||||||
source: "/api/op/track",
|
source: "/api/op/track",
|
||||||
destination: `${openpanelUrl}/track`,
|
destination: `${openpanelUrl}/track`,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
source: "/api/op/track/:path*",
|
|
||||||
destination: `${openpanelUrl}/track/:path*`,
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
images: {
|
images: {
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
|
|
||||||
|
const OPENPANEL_API_URL = process.env.OPENPANEL_API_URL || "https://op.nodecrew.me/api";
|
||||||
|
|
||||||
|
export async function POST(request: NextRequest) {
|
||||||
|
try {
|
||||||
|
const body = await request.text();
|
||||||
|
const headers: Record<string, string> = {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"openpanel-client-id": process.env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID || "",
|
||||||
|
};
|
||||||
|
|
||||||
|
if (process.env.OPENPANEL_CLIENT_SECRET) {
|
||||||
|
headers["openpanel-client-secret"] = process.env.OPENPANEL_CLIENT_SECRET;
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(`${OPENPANEL_API_URL}/track`, {
|
||||||
|
method: "POST",
|
||||||
|
headers,
|
||||||
|
body,
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = await response.text();
|
||||||
|
return new NextResponse(data, {
|
||||||
|
status: response.status,
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"Access-Control-Allow-Origin": "*",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error("[OpenPanel Proxy] Error:", error);
|
||||||
|
return new NextResponse(JSON.stringify({ error: "Proxy error" }), {
|
||||||
|
status: 500,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function GET(request: NextRequest) {
|
||||||
|
const url = new URL(request.url);
|
||||||
|
const path = url.searchParams.get("path") || "";
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch(`${OPENPANEL_API_URL}/track/${path}`, {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"openpanel-client-id": process.env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID || "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = await response.text();
|
||||||
|
return new NextResponse(data, {
|
||||||
|
status: response.status,
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"Access-Control-Allow-Origin": "*",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error("[OpenPanel Proxy] Error:", error);
|
||||||
|
return new NextResponse(JSON.stringify({ error: "Proxy error" }), {
|
||||||
|
status: 500,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user