From c1b8af911f9e2398e9f07617278ef66bc17c6996 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 17 Jul 2023 21:35:34 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20ping=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/api/routers/app.ts | 38 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/server/api/routers/app.ts b/src/server/api/routers/app.ts index 2fc3dd6c8..956c407eb 100644 --- a/src/server/api/routers/app.ts +++ b/src/server/api/routers/app.ts @@ -16,12 +16,17 @@ export const appRouter = createTRPCRouter({ const configName = getCookie('config-name'); const config = getConfig(configName?.toString() ?? 'default'); const app = config.apps.find((app) => app.id === input); + + const errorResponse = { + state: 'offline', + status: 500, + statusText: 'Check logs for more informations', + }; + const url = app?.url; if (url === undefined || !app) { - throw new TRPCError({ - code: 'NOT_FOUND', - message: 'App or url not found', - }); + Consola.error(`App ${input} not found`); + return errorResponse; } const res = await axios .get(url, { httpsAgent: agent, timeout: 2000 }) @@ -31,27 +36,20 @@ export const appRouter = createTRPCRouter({ })) .catch((error: AxiosError) => { if (error.response) { - if (getIsOk(app as AppType, error.response.status)) { - return { - state: 'offline', - status: error.response.status, - statusText: error.response.statusText, - }; - } + return { + state: getIsOk(app as AppType, error.response.status) ? 'online' : 'offline', + status: error.response.status, + statusText: error.response.statusText, + }; } + if (error.code === 'ECONNABORTED') { - throw new TRPCError({ - code: 'TIMEOUT', - message: 'Request Timeout', - }); + Consola.error(`Ping timeout for ${input}`); + return errorResponse; } Consola.error(`Unexpected response: ${error.message}`); - throw new TRPCError({ - code: 'INTERNAL_SERVER_ERROR', - cause: app.id, - message: error.message, - }); + return errorResponse; }); return res; }),