Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
TypeScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import { monitorRegionSchema } from "@openstatus/db/src/schema/constants";import { httpPayloadSchema } from "@openstatus/utils";import { NextResponse } from "next/server";import { z } from "zod";
import { TargetUnreachableError, checkRegion,} from "../../../../../lib/checker/utils";import { isAnInvalidTestUrl } from "../../utils";
export const runtime = "edge";export const preferredRegion = "auto";export const dynamic = "force-dynamic";export const revalidate = 0;
export function GET() { return NextResponse.json({ success: true });}
export async function POST(request: Request) { try { const json = await request.json(); const _valid = httpPayloadSchema .pick({ url: true, method: true, headers: true, body: true }) .extend(z.object({ region: monitorRegionSchema.prefault("ams") }).shape) .safeParse(json);
if (!_valid.success) { return NextResponse.json({ success: false }, { status: 400 }); }
const { url, region, method, headers, body } = _valid.data; // ๐งโ๐ป for the smart one who want to create a loop hole if (isAnInvalidTestUrl(url)) { return NextResponse.json({ success: true }, { status: 200 }); }
const res = await checkRegion({ url, region, method, headers, body });
return NextResponse.json(res); } catch (e) { // Unreachable/timeout targets are expected; only real bugs should reach Sentry. if (!(e instanceof TargetUnreachableError)) { console.error(e); } return NextResponse.json({ success: false }, { status: 400 }); }}