frontAnswerer/lib/utils/parse-error.ts

39 lines
1015 B
TypeScript
Raw Normal View History

2023-12-16 14:55:56 +00:00
import type { AxiosError } from "axios";
export type ServerError = {
statusCode: number;
error: string;
message: string;
};
export const parseAxiosError = (nativeError: unknown): [string, number?] => {
const error = nativeError as AxiosError;
2024-05-31 16:41:18 +00:00
if (error.response?.data && "statusCode" in (error.response.data as ServerError)) {
2023-12-16 14:55:56 +00:00
const serverError = error.response.data as ServerError;
2025-02-23 21:46:51 +00:00
const translatedMessage = serverError.message;
2024-05-31 16:41:18 +00:00
if (translatedMessage !== undefined) serverError.message = translatedMessage;
2023-12-16 14:55:56 +00:00
return [serverError.message, serverError.statusCode];
}
switch (error.status) {
case 404:
2025-02-23 21:46:51 +00:00
return ["Not found.", error.status];
2023-12-16 14:55:56 +00:00
case 403:
2025-02-23 21:46:51 +00:00
return ["Access is restricted.", error.status];
2023-12-16 14:55:56 +00:00
case 401:
2025-02-23 21:46:51 +00:00
return ["Authorization error.", error.status];
2023-12-16 14:55:56 +00:00
case 500:
2025-02-23 21:46:51 +00:00
return ["Internal Server Error.", error.status];
2023-12-16 14:55:56 +00:00
case 503:
2025-02-23 21:46:51 +00:00
return ["Service unavailable.", error.status];
2023-12-16 14:55:56 +00:00
default:
2025-02-23 21:46:51 +00:00
return ["Unknown server error."];
2023-12-16 14:55:56 +00:00
}
};