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", diff --git a/src/handler.ts b/src/handler.ts index e2a04a4..4623185 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -13,11 +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 - const response = await axios.post(url, evaluationFunctionRequestData) - return response.data + try { + const response = await axios.post(url, evaluationFunctionRequestData) + return response.data + } catch (_) { + 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) } })