Files
erika/lib/share/http-error.ts
T

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 });
}