22 lines
636 B
TypeScript
22 lines
636 B
TypeScript
export class ShareHttpError extends Error {
|
|
constructor(
|
|
message: string,
|
|
readonly status: number,
|
|
readonly retryAfter?: number
|
|
) {
|
|
super(message);
|
|
this.name = "ShareHttpError";
|
|
}
|
|
}
|
|
|
|
export function shareErrorResponse(error: unknown) {
|
|
const known = error instanceof ShareHttpError;
|
|
const status = known ? error.status : 500;
|
|
const message = known ? error.message : "Internal server error";
|
|
const headers = new Headers();
|
|
if (known && error.retryAfter) {
|
|
headers.set("Retry-After", String(error.retryAfter));
|
|
}
|
|
return Response.json({ success: false, error: message }, { status, headers });
|
|
}
|