diff --git a/apps/proxy/Dockerfile b/apps/proxy/Dockerfile index bc91da6..679f99b 100644 --- a/apps/proxy/Dockerfile +++ b/apps/proxy/Dockerfile @@ -4,9 +4,6 @@ FROM fascinated/docker-images:node-pnpm-latest AS base # Make sure you update this Dockerfile, the Dockerfile in the web workspace and copy that over to Dockerfile in the docs. FROM base AS builder -# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. -RUN apk add --no-cache libc6-compat -RUN apk update # Set working directory WORKDIR /app RUN pnpm install -g turbo diff --git a/apps/proxy/src/routes/proxy.ts b/apps/proxy/src/routes/proxy.ts index d583541..f25d9d1 100644 --- a/apps/proxy/src/routes/proxy.ts +++ b/apps/proxy/src/routes/proxy.ts @@ -125,18 +125,16 @@ export default class ProxyRoute extends Route { try { const cachedRequest = cache.get(url); if (cachedRequest) { - res - .status(cachedRequest.status) - .set(cachedRequest.headers) - .json(cachedRequest.data); - log(cachedRequest.nodeId, url, cachedRequest.status, true); - logRequestToDatabase({ - nodeId: cachedRequest.nodeId, + const { status, headers, data, nodeId } = cachedRequest; + + res.status(status).set(headers).json(data); + log(nodeId, url, status, true); + return logRequestToDatabase({ + nodeId: nodeId, url, - status: cachedRequest.status, + status: status, cached: true, }); - return; } const node = nodeManager.getRandomNode(); @@ -150,29 +148,29 @@ export default class ProxyRoute extends Route { const before = Date.now(); const response = await node.fetch(url); const nodeId = response.headers["x-proxy-node"]; - const data = response.data; + const { status, headers, data } = response; if (response.status === 500) { res.status(500).json(RouteMessages.internalServerError(data)); return; } - log(nodeId, url, response.status, Date.now() - before); + log(nodeId, url, status, Date.now() - before); logRequestToDatabase({ nodeId, url, - status: response.status, + status: status, time: Date.now() - before, }); cache.set(url, { nodeId: nodeId, - status: response.status, - headers: response.headers, + status: status, + headers: headers, data: data, } as CachedRequest); // Send the response to the client - res.status(response.status).set(response.headers).send(data); + res.status(status).set(headers).send(data); } catch (ex: any) { res.status(500).json(RouteMessages.internalServerError(ex.message || ex)); }