diff --git a/mappings/ps_error.jsonata b/mappings/ps_error.jsonata new file mode 100644 index 0000000000000000000000000000000000000000..9e0f45a700b0425c0c198bf6484da0709d720c44 --- /dev/null +++ b/mappings/ps_error.jsonata @@ -0,0 +1,3 @@ +{ + "error": error +} \ No newline at end of file diff --git a/src/middleware/errorhandler.middleware.ts b/src/middleware/errorhandler.middleware.ts index ed854f39a9b822b3f36eb6fae4580a5821cfb4ec..3fbf2bbe80844fbf7c2bdcaa5443fd6b72246c79 100644 --- a/src/middleware/errorhandler.middleware.ts +++ b/src/middleware/errorhandler.middleware.ts @@ -1,12 +1,19 @@ import { inject, injectable } from 'inversify'; import { Request, Response, NextFunction } from 'express'; import { AppLogger } from '../app/app.logger'; +import { AxiosError } from 'axios'; +import { TLService } from '../tl/tl.service'; @injectable() export class ErrorHandlerMiddleware { - constructor(@inject(AppLogger) private logger: AppLogger) { } + constructor(@inject(AppLogger) private logger: AppLogger, @inject(TLService) private tlService: TLService) { } - public handleError(error: Error, req: Request, res: Response, next: NextFunction): void { + public async handleError(error: Error | AxiosError, req: Request, res: Response, next: NextFunction) { + const { response } = error as AxiosError; + if (response?.status === 400) { + const transformedResponse = await this.tlService.transform(response.data, "ps_error"); + return res.status(response.status).json(transformedResponse); + } this.logger.error("%s", error.stack); const statusCode = res.statusCode === 200 ? 500 : res.statusCode; res.status(statusCode).json({