From 57d3aa3266ec206da8d93ad4ae0188b26f52e4f0 Mon Sep 17 00:00:00 2001 From: Liam Date: Fri, 17 Nov 2023 09:03:05 +0000 Subject: [PATCH] support any requests --- apps/node/src/routes/proxy.ts | 8 ++------ apps/proxy/src/routes/proxy.ts | 34 +++++++++++++++++----------------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/apps/node/src/routes/proxy.ts b/apps/node/src/routes/proxy.ts index a52e62f..14137fa 100644 --- a/apps/node/src/routes/proxy.ts +++ b/apps/node/src/routes/proxy.ts @@ -27,11 +27,7 @@ export default class ProxyRoute extends Route { return; } try { - const response = await axios.get(url, { - headers: { - "Content-Type": "application/json", - }, - }); + const response = await axios.get(url); const data = response.data; const headers = response.headers; @@ -69,7 +65,7 @@ export default class ProxyRoute extends Route { headers["access-control-allow-methods"] = "*"; // Return the JSON response - res.status(response.status).set(headers).json(data); + res.status(response.status).set(headers).send(data); } catch (ex) { res .status(500) diff --git a/apps/proxy/src/routes/proxy.ts b/apps/proxy/src/routes/proxy.ts index 94a3434..d583541 100644 --- a/apps/proxy/src/routes/proxy.ts +++ b/apps/proxy/src/routes/proxy.ts @@ -122,14 +122,6 @@ export default class ProxyRoute extends Route { return; } - const node = nodeManager.getRandomNode(); - if (!node) { - res - .status(500) - .json(RouteMessages.internalServerError("No nodes available")); - return; - } - try { const cachedRequest = cache.get(url); if (cachedRequest) { @@ -147,6 +139,14 @@ export default class ProxyRoute extends Route { return; } + const node = nodeManager.getRandomNode(); + if (!node) { + res + .status(500) + .json(RouteMessages.internalServerError("No nodes available")); + return; + } + const before = Date.now(); const response = await node.fetch(url); const nodeId = response.headers["x-proxy-node"]; @@ -158,21 +158,21 @@ export default class ProxyRoute extends Route { } log(nodeId, url, response.status, Date.now() - before); - - // Return the JSON response - res.status(response.status).set(response.headers).json(data); - cache.set(url, { - nodeId: nodeId, - status: response.status, - headers: response.headers, - data: data, - } as CachedRequest); logRequestToDatabase({ nodeId, url, status: response.status, time: Date.now() - before, }); + cache.set(url, { + nodeId: nodeId, + status: response.status, + headers: response.headers, + data: data, + } as CachedRequest); + + // Send the response to the client + res.status(response.status).set(response.headers).send(data); } catch (ex: any) { res.status(500).json(RouteMessages.internalServerError(ex.message || ex)); }