Skip to content

Commit cdfe429

Browse files
toy-craneclaude
andcommitted
chore: add detailed logging to extract API route
Log upstream status, headers, and body preview to diagnose Cloudflare 403 responses from Vercel deployment. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 4e9e8de commit cdfe429

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

app/api/extract/route.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,39 @@ export async function GET(request: NextRequest) {
99
return NextResponse.json({ error: "url parameter is required" }, { status: 400 });
1010
}
1111

12+
const targetUrl = `${DEFUDDLE_API}/${url}`;
13+
1214
try {
13-
const response = await fetch(`${DEFUDDLE_API}/${url}`, {
15+
const response = await fetch(targetUrl, {
1416
signal: AbortSignal.timeout(15_000),
1517
headers: {
1618
"User-Agent": request.headers.get("User-Agent") || "",
1719
},
1820
});
1921

22+
const body = await response.text();
23+
const responseHeaders = Object.fromEntries(response.headers.entries());
24+
25+
console.log("[extract] upstream response", {
26+
targetUrl,
27+
status: response.status,
28+
headers: responseHeaders,
29+
bodyPreview: body.slice(0, 500),
30+
});
31+
2032
if (!response.ok) {
21-
const text = await response.text();
22-
return new NextResponse(text, {
33+
return new NextResponse(body, {
2334
status: response.status,
2435
headers: { "Content-Type": response.headers.get("Content-Type") || "text/plain" },
2536
});
2637
}
2738

28-
const text = await response.text();
29-
return new NextResponse(text, {
39+
return new NextResponse(body, {
3040
status: 200,
3141
headers: { "Content-Type": response.headers.get("Content-Type") || "text/markdown" },
3242
});
33-
} catch {
43+
} catch (err) {
44+
console.error("[extract] fetch error", { targetUrl, error: String(err) });
3445
return NextResponse.json({ error: "Failed to fetch the URL" }, { status: 502 });
3546
}
3647
}

0 commit comments

Comments
 (0)