From ea2e0417feeeaddf9352bd2f911b8063467a66e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me> Date: Thu, 2 Nov 2023 19:29:30 +0100 Subject: [PATCH] GlobalHelper => Add repository creation error function --- ExpressAPI/src/helpers/GlobalHelper.ts | 33 ++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 ExpressAPI/src/helpers/GlobalHelper.ts diff --git a/ExpressAPI/src/helpers/GlobalHelper.ts b/ExpressAPI/src/helpers/GlobalHelper.ts new file mode 100644 index 0000000..c97328d --- /dev/null +++ b/ExpressAPI/src/helpers/GlobalHelper.ts @@ -0,0 +1,33 @@ +import express from 'express'; +import GitlabRepository from '../shared/types/Gitlab/GitlabRepository'; +import logger from '../shared/logging/WinstonLogger'; +import GitlabManager from '../managers/GitlabManager'; +import { AxiosError } from 'axios'; +import { StatusCodes } from 'http-status-codes'; +import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; + + +class GlobalHelper { + async repositoryCreationError(message: string, error: any, req: express.Request, res: express.Response, gitlabError: DojoStatusCode, internalError: DojoStatusCode, repositoryToRemove?: GitlabRepository): Promise<void> { + logger.error(message); + logger.error(error); + + try { + if ( repositoryToRemove ) { + await GitlabManager.deleteRepository(repositoryToRemove.id); + } + } catch ( error ) { + logger.error('Repository deletion error'); + logger.error(error); + } + + if ( error instanceof AxiosError ) { + return req.session.sendResponse(res, StatusCodes.INTERNAL_SERVER_ERROR, {}, `Unknown gitlab error: ${ message }`, gitlabError); + } + + return req.session.sendResponse(res, StatusCodes.INTERNAL_SERVER_ERROR, {}, `Unknown error: ${ message }`, internalError); + }; +} + + +export default new GlobalHelper(); \ No newline at end of file -- GitLab