Files
calendar/apps/web/app/api/apiRouteMiddleware.ts
T
Benny JooandGitHub 87f161d944 chore: migrate OG image generation API to App Router (#19568)
* migrate

* improve apiRouteMiddleware wrapper type

* refactor

* fix type check

* fix build

* fix

* Do not import stripe lib in getServerErrorFromUnknown

* address comment

* remove comment

* add url

* keep the location

* remove space

* add unit test for getServerErrorFromUnknown

* improve

* fix
2025-02-28 11:03:20 +01:00

37 lines
1.3 KiB
TypeScript

import type { Params } from "app/_types";
import { ApiError } from "next/dist/server/api-utils";
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
import { getServerErrorFromUnknown } from "@calcom/lib/server/getServerErrorFromUnknown";
export const apiRouteMiddleware =
(handler: (req: NextRequest, { params }: { params: Params }) => Promise<NextResponse | Response>) =>
async (req: NextRequest, { params }: { params: Params }) => {
try {
return await handler(req, { params });
} catch (error) {
if (error instanceof ApiError) {
return NextResponse.json({ message: error.message }, { status: error.statusCode });
} else {
const serverError = getServerErrorFromUnknown(error);
// we don't want to report Bad Request errors to Sentry / console
if (!(serverError.statusCode >= 400 && serverError.statusCode < 500)) {
console.error(error);
const captureException = (await import("@sentry/nextjs")).captureException;
captureException(error);
}
return NextResponse.json(
{
message: serverError.message,
url: serverError.url,
method: serverError.method,
},
{
status: serverError.statusCode,
}
);
}
}
};