fix: handle notification endpoint failures
This commit is contained in:
@@ -26,6 +26,10 @@ function isCronAuthorized(request: Request) {
|
||||
return authHeader === `Bearer ${secret}` || secretHeader === secret;
|
||||
}
|
||||
|
||||
function getErrorMessage(error: unknown) {
|
||||
return error instanceof Error ? error.message : "Unknown notification check error.";
|
||||
}
|
||||
|
||||
export async function GET(request: Request) {
|
||||
if (!isCronAuthorized(request)) {
|
||||
return NextResponse.json({ error: "Unauthorized." }, { status: 401 });
|
||||
@@ -34,6 +38,7 @@ export async function GET(request: Request) {
|
||||
return NextResponse.json({ error: "Web Push is not configured." }, { status: 503 });
|
||||
}
|
||||
|
||||
try {
|
||||
const now = Date.now();
|
||||
const warnings = (await fetchMeteoWarnings(AbortSignal.timeout(12_000))).filter((warning) => isRelevantWarning(warning, now));
|
||||
const subscriptions = getPushSubscriptions().filter((subscription) => subscription.enabled);
|
||||
@@ -74,4 +79,10 @@ export async function GET(request: Request) {
|
||||
skipped,
|
||||
failed,
|
||||
});
|
||||
} catch (error) {
|
||||
return NextResponse.json({
|
||||
error: "Unable to check IMGW meteorological warnings.",
|
||||
details: getErrorMessage(error),
|
||||
}, { status: 502 });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,11 @@ export async function GET(request: Request) {
|
||||
&& Number.isFinite(subscription.latitude)
|
||||
&& Number.isFinite(subscription.longitude)
|
||||
));
|
||||
const warnings = await fetchMeteoWarnings(AbortSignal.timeout(12_000));
|
||||
let warningsUnavailable = false;
|
||||
const warnings = await fetchMeteoWarnings(AbortSignal.timeout(12_000)).catch(() => {
|
||||
warningsUnavailable = true;
|
||||
return [];
|
||||
});
|
||||
let sent = 0;
|
||||
let skipped = 0;
|
||||
let failed = 0;
|
||||
@@ -82,6 +86,7 @@ export async function GET(request: Request) {
|
||||
ok: true,
|
||||
date: dateKey,
|
||||
subscriptions: subscriptions.length,
|
||||
warningsUnavailable,
|
||||
sent,
|
||||
skipped,
|
||||
failed,
|
||||
|
||||
Reference in New Issue
Block a user