From 3e92568558b2f12fc546f5a437b0cb3d15e1ed73 Mon Sep 17 00:00:00 2001 From: "ignacio.bengoa" <ignacio.bengoa@fing.edu.uy> Date: Sun, 31 Oct 2021 16:40:38 -0300 Subject: [PATCH] Handling different error messages in UserController for front-end usage --- src/Controllers/UserController.ts | 45 ++++++++++++++++--------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/Controllers/UserController.ts b/src/Controllers/UserController.ts index b55ce11..946d6bd 100644 --- a/src/Controllers/UserController.ts +++ b/src/Controllers/UserController.ts @@ -1,6 +1,7 @@ // TODO: Get rid of all the 'any' mentions /* eslint-disable @typescript-eslint/no-explicit-any */ +import { AxiosError } from 'axios'; import { Handler, Request, Response, Router, } from 'express'; @@ -14,8 +15,8 @@ const create: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.create(req.body); return logAndRespond(res, 200, 'send', user, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -26,8 +27,8 @@ const listUsers: Handler = async (req: Request, res: Response) => { UserAPI.listUsers(req.query.type, req.query.limit, req.query.offset, req.query.search, token); return logAndRespond(res, 200, 'send', userList, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -36,8 +37,8 @@ const login: Handler = async (req: Request, res: Response) => { const { token, user }: any = await UserAPI.login(req.body); return logAndRespond(res, 200, 'send', { token, user }, 'info', null, ['token']); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -47,8 +48,8 @@ const update: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.update(req.body, req.params.id, token); return logAndRespond(res, 200, 'send', user, 'info', null, ['token']); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -58,8 +59,8 @@ const password: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.password(req.body, req.params.id, token); return logAndRespond(res, 200, 'send', user, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -69,8 +70,8 @@ const approve: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.approve(req.params.id, token); return logAndRespond(res, 200, 'send', user, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -80,8 +81,8 @@ const cancel: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.cancel(req.params.id, token); return logAndRespond(res, 200, 'send', user, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -91,8 +92,8 @@ const giveAdminPermission: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.giveAdminPermission(req.params.id, token); return logAndRespond(res, 200, 'send', user, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -102,8 +103,8 @@ const removeAdminPermission: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.removeAdminPermission(req.params.id, token); return logAndRespond(res, 200, 'send', user, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -113,8 +114,8 @@ const checkUser: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.checkUser(token); return logAndRespond(res, 200, 'send', user, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; @@ -124,8 +125,8 @@ const getUser: Handler = async (req: Request, res: Response) => { const user: any = await UserAPI.getUser(Number(req.params.id), token); return logAndRespond(res, 200, 'send', user, 'info', null, null); } catch (error) { - const e = error as Error; - return logAndRespond(res, 400, 'json', { error: e.message }, 'info', null, null); + const e = error as AxiosError; + return logAndRespond(res, e.response ? e.response.status : 400, 'json', e.response ? e.response.data : { error: e.message }, 'info', null, null); } }; -- GitLab