diff --git a/src/models/AdminEntity/transformRequestError.ts b/src/models/AdminEntity/transformRequestError.ts index 54dc0b6fb..9df4275f3 100644 --- a/src/models/AdminEntity/transformRequestError.ts +++ b/src/models/AdminEntity/transformRequestError.ts @@ -1,9 +1,32 @@ import { AxiosError } from 'axios'; import { NotAuthorizedError, NotFoundError } from 'errors/fetchErrors'; +import { Admin } from 'flyteidl'; +import { decodeProtoResponse } from './utils'; + +// to enrich the error message by adding the response +function decodeErrorResponseMessage(error: AxiosError) { + try { + // probablly using a wrong decode type.. is there a decode type for the error message? + const decodedErrorResponseMessage = decodeProtoResponse( + error.response?.data, + Admin.RawOutputDataConfig, + ); + if (decodedErrorResponseMessage && decodedErrorResponseMessage.outputLocationPrefix) { + const errorStatusMessage = error?.message; + const errorResponseMessage = decodedErrorResponseMessage.outputLocationPrefix; + + return new Error(`${errorStatusMessage} ${errorResponseMessage}`); + } + } catch (err) { + // do nothing + } + return error; +} /** Detects special cases for errors returned from Axios and lets others pass through. */ export function transformRequestError(err: unknown, path: string) { const error = err as AxiosError; + if (!error.response) { return error; } @@ -17,5 +40,5 @@ export function transformRequestError(err: unknown, path: string) { return new NotAuthorizedError(); } - return error; + return decodeErrorResponseMessage(error); }