import { ImageResponse } from "next/og"; import { getCheckerDataById, regionFormatter, timestampFormatter, } from "../../../../lib/checker/utils"; import { cn } from "../../../../lib/utils"; import { BasicLayout } from "../_components/basic-layout"; import { SIZE, calSemiBold, interLight, interMedium, interRegular, } from "../utils"; export const runtime = "edge"; export async function GET(req: Request) { const [interRegularData, interLightData, calSemiBoldData, interMediumData] = await Promise.all([interRegular, interLight, calSemiBold, interMedium]); const { searchParams } = new URL(req.url); const id = searchParams.has("id") ? searchParams.get("id") : undefined; const data = id ? await getCheckerDataById(id) : undefined; function getMinMax() { if (!data?.checks?.length) return; let min = data.checks[0]; let max = data.checks[0]; for (const check of data.checks) { if (check.latency < min.latency) min = check; if (check.latency > max.latency) max = check; } return { min, max }; } const { min, max } = getMinMax() || {}; function getStatusColor(statusCode: number) { const green = String(statusCode).startsWith("2"); if (green) return "border-green-300 bg-green-50 text-green-700"; const blue = String(statusCode).startsWith("3"); if (blue) return "border-blue-300 bg-blue-50 text-blue-700"; const red = String(statusCode).startsWith("4") || String(statusCode).startsWith("5"); if (red) return "border-rose-300 bg-rose-50 text-rose-700"; return "border-gray-300 bg-gray-50 text-gray-700"; } return new ImageResponse(

{data?.url}

{data && (

{timestampFormatter(data.timestamp)}

)}

Min. Request

Max. Request

Status

{min?.status && (

{min?.status}

)}

Region

{min?.region && (

{regionFormatter(min.region)}

)}

Latency

{min?.latency}ms

Status

{max?.status && (

{max?.status}

)}

Region

{max?.region && (

{regionFormatter(max.region)}

)}

Latency

{max?.latency}ms

, { ...SIZE, fonts: [ { name: "Inter", data: interMediumData, style: "normal", weight: 500, }, { name: "Inter", data: interRegularData, style: "normal", weight: 400, }, { name: "Inter", data: interLightData, style: "normal", weight: 300, }, { name: "Cal", data: calSemiBoldData, style: "normal", weight: 600, }, ], }, ); }