mirror of
https://github.com/i701/sarlink-portal.git
synced 2025-04-24 04:06:53 +00:00
Some checks failed
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 1m39s
39 lines
886 B
TypeScript
39 lines
886 B
TypeScript
export async function tryCatch<T, E = Error>(promise: T | Promise<T>) {
|
|
try {
|
|
const data = await promise;
|
|
return [null, data] as const;
|
|
} catch (error) {
|
|
return [error as E, null] as const;
|
|
}
|
|
}
|
|
|
|
export async function handleApiResponse<T>(
|
|
response: Response,
|
|
fnName?: string,
|
|
) {
|
|
const responseData = await response.json();
|
|
if (response.status === 401) {
|
|
throw new Error("UNAUTHORIZED");
|
|
}
|
|
|
|
if (response.status === 403) {
|
|
throw new Error(
|
|
responseData.message ||
|
|
"Forbidden; you do not have permission to access this resource.",
|
|
);
|
|
}
|
|
|
|
if (response.status === 429) {
|
|
throw new Error(
|
|
responseData.message || "Too many requests; please try again later.",
|
|
);
|
|
}
|
|
|
|
if (!response.ok) {
|
|
console.log(`API Error Response from ${fnName}:`, responseData);
|
|
throw new Error(responseData.message || "Something went wrong.");
|
|
}
|
|
|
|
return responseData as T;
|
|
}
|