import { AxiosResponse, AxiosError } from 'axios'; import { ErrorType } from '../models/enums'; import { AppError } from '../app-error'; import { ErrorCode } from '../models/enums'; function extractErrorCodeFromResponse(errorResponse: AxiosResponse): number { if (errorResponse && errorResponse.data) { if (errorResponse.data.error) { return errorResponse.data.error.errorCode; } return errorResponse.data.errorCode; } return ErrorCode.CONNECTION_LOST; } export class HttpError extends AppError { public description?: string; constructor(error: AxiosError, description?: string) { const errorCode: number = extractErrorCodeFromResponse(error.response); super(errorCode, ErrorType.HTTP); this.description = description; } }