Final Phase C batch: moves the remaining inline route bodies (12 proxy stubs, /changelog, the webhooks/hijacks group, PDF export, ASPA adoption tracker + IPv6 stats endpoints) into server/routes/*.js and server/services/api-proxy.js, verified byte-for-byte via the smoke-test diff. Also drops the now-duplicate proxyToApiServer()/API_SERVER_PORT that were left behind in server.js after api-proxy.js absorbed them. server.js: 6838 -> 578 lines, under the 800-line project limit.
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
const http = require("http");
|
|
|
|
// Several routes were extracted into src/api/ + src/features/*/routes.ts
|
|
// (Fastify, dist/api/index.js, run as a separate PM2 process on
|
|
// API_SERVER_PORT) but were never re-wired here after that migration —
|
|
// they just silently 404'd. This forwards those specific paths through
|
|
// rather than reimplementing them inline a second time.
|
|
const API_SERVER_PORT = parseInt(process.env.API_SERVER_PORT || "3102", 10);
|
|
|
|
function proxyToApiServer(req, res, targetUrl) {
|
|
const proxyReq = http.request(
|
|
{
|
|
hostname: "127.0.0.1",
|
|
port: API_SERVER_PORT,
|
|
path: targetUrl,
|
|
method: req.method,
|
|
headers: Object.assign({}, req.headers, { host: "127.0.0.1:" + API_SERVER_PORT }),
|
|
},
|
|
(proxyRes) => {
|
|
res.writeHead(proxyRes.statusCode, proxyRes.headers);
|
|
proxyRes.pipe(res);
|
|
}
|
|
);
|
|
proxyReq.on("error", (err) => {
|
|
console.error("[API Proxy] Error forwarding " + targetUrl + ":", err.message);
|
|
if (!res.headersSent) {
|
|
res.writeHead(502, { "Content-Type": "application/json" });
|
|
res.end(JSON.stringify({ error: "API server unavailable", detail: err.message }));
|
|
}
|
|
});
|
|
req.pipe(proxyReq);
|
|
}
|
|
|
|
module.exports = { proxyToApiServer, API_SERVER_PORT };
|