37 lines
1.9 KiB
TypeScript
37 lines
1.9 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { applyAuthResponseCookies, buildBackendRequestHeaders, buildJsonBackendRequestHeaders } from "@/lib/backend-auth";
|
|
import { buildProxyExceptionResponse } from "@/lib/api-proxy";
|
|
import { requireOpsProxyAuth } from "@/lib/ops-proxy-auth";
|
|
|
|
const API_BASE = process.env.POLYWEATHER_API_BASE_URL;
|
|
const BACKEND = API_BASE ? `${API_BASE}/api/ops/sensitive-config` : "";
|
|
|
|
export async function GET(req: NextRequest) {
|
|
if (!API_BASE) return NextResponse.json({ error: "API_BASE not configured" }, { status: 500 });
|
|
try {
|
|
const auth = await buildBackendRequestHeaders(req);
|
|
const authError = requireOpsProxyAuth(req, auth);
|
|
if (authError) return authError;
|
|
|
|
const res = await fetch(BACKEND, { headers: auth.headers, cache: "no-store" });
|
|
const raw = await res.text();
|
|
const response = new NextResponse(raw, { status: res.status, headers: { "Content-Type": "application/json", "Cache-Control": "no-store" } });
|
|
return applyAuthResponseCookies(response, auth.response);
|
|
} catch (e) { return buildProxyExceptionResponse(e, { publicMessage: "Sensitive config fetch failed" }); }
|
|
}
|
|
|
|
export async function PUT(req: NextRequest) {
|
|
if (!API_BASE) return NextResponse.json({ error: "API_BASE not configured" }, { status: 500 });
|
|
try {
|
|
const auth = await buildBackendRequestHeaders(req);
|
|
const authError = requireOpsProxyAuth(req, auth);
|
|
if (authError) return authError;
|
|
|
|
const body = await req.text();
|
|
const res = await fetch(BACKEND, { method: "PUT", headers: buildJsonBackendRequestHeaders(auth.headers), body, cache: "no-store" });
|
|
const raw = await res.text();
|
|
const response = new NextResponse(raw, { status: res.status, headers: { "Content-Type": "application/json", "Cache-Control": "no-store" } });
|
|
return applyAuthResponseCookies(response, auth.response);
|
|
} catch (e) { return buildProxyExceptionResponse(e, { publicMessage: "Sensitive config update failed" }); }
|
|
}
|