import { Context, Next } from "@oak/oak"; import { APIErrorCode, APIFailure } from "../../shared/api.ts"; import { APIException } from "../lib/api-exception.ts"; export async function errorMiddleware(ctx: Context, next: Next) { try { await next(); } catch (err) { if (err instanceof APIException) { const responseBody: APIFailure = { success: false, error: { code: err.code, message: err.message, }, }; ctx.response.status = err.status; ctx.response.body = responseBody; console.log(responseBody); } else { console.error(err); const responseBody: APIFailure = { success: false, error: { code: APIErrorCode.SERVER_ERROR, message: "Unexpected server error", }, }; ctx.response.status = 500; ctx.response.body = responseBody; } } }