From 67c1811c8fe50385fff6e099ae17dae8dda43dd5 Mon Sep 17 00:00:00 2001 From: caty21 Date: Sat, 27 Jun 2026 16:27:20 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20rate-probabilities=20=E2=86=92=20Europea?= =?UTF-8?q?n=20region=20+=20stronger=20browser=20headers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - preferredRegion: fra1/lhr1/cdg1 to bypass US cloud IP blocks on rateprobability.com - Better sec-* headers to pass bot detection (same-origin cors mode) - cache: no-store on fetch to avoid stale null caching - Log CB count on each invocation for diagnostics Co-Authored-By: Claude Sonnet 4.6 --- app/api/rate-probabilities/route.ts | 5 ++++- lib/rateprobability.ts | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/api/rate-probabilities/route.ts b/app/api/rate-probabilities/route.ts index 71222dd..a965f36 100644 --- a/app/api/rate-probabilities/route.ts +++ b/app/api/rate-probabilities/route.ts @@ -3,6 +3,7 @@ import { fetchAllCBPaths } from "@/lib/rateprobability"; import type { RateProbData } from "@/lib/rateprobability"; export const dynamic = "force-dynamic"; +export const preferredRegion = ["fra1", "lhr1", "cdg1"]; // Europe (Frankfurt / London / Paris) export type { RateProbData, CBRatePath, RateProbMeeting } from "@/lib/rateprobability"; @@ -13,8 +14,10 @@ export interface RateProbabilitiesResponse { export async function GET() { const data = await fetchAllCBPaths(); + const currencies = Object.keys(data); + console.log(`[rate-prob] fetched ${currencies.length} CBs: ${currencies.join(", ")}`); return NextResponse.json( { data, fetchedAt: new Date().toISOString() } satisfies RateProbabilitiesResponse, - { headers: { "Cache-Control": "s-maxage=3600, stale-while-revalidate=7200" } } + { headers: { "Cache-Control": "no-store" } } ); } diff --git a/lib/rateprobability.ts b/lib/rateprobability.ts index 7e0f402..16ceeda 100644 --- a/lib/rateprobability.ts +++ b/lib/rateprobability.ts @@ -100,11 +100,19 @@ async function fetchCBPath(ccy: Currency, slug: string): Promise;