From 6e94a7daee1520208fa6553eba67e475313077f3 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Tue, 11 Feb 2025 19:11:06 +0100 Subject: [PATCH] feat: Add logging to Strava webhook verification endpoint --- src/app/api/strava/webhook/route.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/app/api/strava/webhook/route.ts b/src/app/api/strava/webhook/route.ts index e527434..f51fa1b 100644 --- a/src/app/api/strava/webhook/route.ts +++ b/src/app/api/strava/webhook/route.ts @@ -231,12 +231,17 @@ const urlSearchParamsSchema = z.object({ }); export async function GET(req: NextRequest) { + const logger = createLogger("strava-webhook-subscription"); try { const safeUrlSearchParams = urlSearchParamsSchema.safeParse( Object.fromEntries(new URL(req.url).searchParams.entries()) ); if (!safeUrlSearchParams.success) { + logger.error( + "Invalid url search params", + safeUrlSearchParams.error.issues + ); return NextResponse.json(safeUrlSearchParams.error.issues, { status: 422, }); @@ -246,14 +251,22 @@ export async function GET(req: NextRequest) { safeUrlSearchParams.data["hub.verify_token"] !== process.env.STRAVA_VERIFY_TOKEN ) { + logger.error("Invalid verify token", { + verifyToken: safeUrlSearchParams.data["hub.verify_token"], + }); + return NextResponse.json({ error: "Forbidden" }, { status: 403 }); } + logger.info("Valid verify token"); + return NextResponse.json( { "hub.challenge": safeUrlSearchParams.data["hub.challenge"] }, { status: 200 } ); } catch (error) { + logger.error("Unknown error", serializeError(error)); + return NextResponse.json(serializeError(error), { status: 500 }); } }