import express from 'express'; 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'; import SharedGitlabManager from '../shared/managers/SharedGitlabManager'; import Config from '../config/Config'; import * as Gitlab from '@gitbeaker/rest'; class GlobalHelper { readonly sharedGitlabManager = new SharedGitlabManager(Config.gitlab.account.token); async repositoryCreationError(message: string, error: unknown, req: express.Request, res: express.Response, gitlabError: DojoStatusCode, internalError: DojoStatusCode, repositoryToRemove?: Gitlab.ProjectSchema): Promise<void> { logger.error(message); logger.error(error); try { if ( repositoryToRemove ) { await GitlabManager.deleteRepository(repositoryToRemove.id); } } catch ( deleteError ) { logger.error('Repository deletion error'); logger.error(deleteError); } 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();