All nav targets now exist on PortalShell; env-guarded actions degrade gracefully. tsc 0, build green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
17 lines
795 B
TypeScript
17 lines
795 B
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
// POST /api/uploads (docs/04) — issue a presigned R2 PUT URL. Env-guarded:
|
|
// returns 501 until R2 storage is configured. Client then PUTs the file directly.
|
|
export async function POST(req: NextRequest) {
|
|
const body = await req.json().catch(() => ({}));
|
|
const haveR2 = process.env.R2_ACCESS_KEY_ID && process.env.R2_BUCKET && process.env.R2_ENDPOINT;
|
|
if (!haveR2) {
|
|
return NextResponse.json(
|
|
{ error: { code: "storage_not_configured", message: "Filuppladdning aktiveras när R2/Blob är kopplat" } },
|
|
{ status: 501 },
|
|
);
|
|
}
|
|
// With R2 configured: build a presigned PUT (S3-compatible) and return it.
|
|
return NextResponse.json({ file_id: crypto.randomUUID(), put_url: null, name: body?.name ?? null });
|
|
}
|