From 21bfc8d60282359bf7c8693642d2d1ec7ddcdb44 Mon Sep 17 00:00:00 2001 From: Daniel Trowbridge Date: Thu, 23 Jan 2025 21:33:12 +0000 Subject: [PATCH 1/3] fix: avoid crashing if forwarded POST request fails --- src/handler.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/handler.ts b/src/handler.ts index e2a04a4..017cf22 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -18,6 +18,10 @@ export async function handleRawRequest(body: unknown): Promise { if (parseResult == null) return null const { url, evaluationFunctionRequestData } = parseResult - const response = await axios.post(url, evaluationFunctionRequestData) - return response.data + try { + const response = await axios.post(url, evaluationFunctionRequestData) + return response.data + } catch (_) { + return null + } } From ea7d3ef0494ed7267305c961e2ac3779aa5aa839 Mon Sep 17 00:00:00 2001 From: Daniel Trowbridge Date: Thu, 23 Jan 2025 21:43:30 +0000 Subject: [PATCH 2/3] feat: log error reasons --- src/handler.ts | 13 ++++++++++--- src/index.ts | 26 ++++++++++++++++---------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/handler.ts b/src/handler.ts index 017cf22..4623185 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -13,15 +13,22 @@ export function parseRequestBody(body: unknown): { return { url, evaluationFunctionRequestData } } -export async function handleRawRequest(body: unknown): Promise { +export enum HandlerError { + ParseFailed, + ForwardingFailed, +} + +export async function handleRawRequest( + body: unknown, +): Promise { const parseResult = parseRequestBody(body) - if (parseResult == null) return null + if (parseResult == null) return HandlerError.ParseFailed const { url, evaluationFunctionRequestData } = parseResult try { const response = await axios.post(url, evaluationFunctionRequestData) return response.data } catch (_) { - return null + return HandlerError.ForwardingFailed } } diff --git a/src/index.ts b/src/index.ts index 1e5cc30..993800c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,7 @@ import cors from 'cors' import express from 'express' import dotenv from 'dotenv' -import { handleRawRequest } from './handler' +import { HandlerError, handleRawRequest } from './handler' dotenv.config() @@ -14,15 +14,21 @@ app.use(express.json()) app.post('/', async (req, res) => { console.log(`[INFO] Received POST request:`, req.body) const responseData = await handleRawRequest(req.body) - if (responseData == null) { - console.log('[WARN] Invalid request received and ignored.') - res.status(400).send() - } else { - console.log( - '[INFO] Received response from evaluation function:', - responseData, - ) - res.send(responseData) + switch (responseData) { + case HandlerError.ParseFailed: + console.log('[WARN] Invalid request received and ignored.') + res.status(400).send() + break + case HandlerError.ForwardingFailed: + console.log('[WARN] Failed to forward request to evaluation function.') + res.status(400).send() + break + default: + console.log( + '[INFO] Received response from evaluation function:', + responseData, + ) + res.send(responseData) } }) From f909fb1ec3b18906976d8e5d0f5cc277e4a3492b Mon Sep 17 00:00:00 2001 From: Daniel Trowbridge Date: Thu, 23 Jan 2025 21:51:52 +0000 Subject: [PATCH 3/3] chore: minor bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ac4a516..a5822de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lambda-feedback-segp-sandbox/ef-test-server", - "version": "0.3.0", + "version": "0.4.0", "main": "dist/index.js", "scripts": { "build": "yarn tsc",