import { NextRequest } from 'next/server' export const dynamic = 'force-dynamic' function redirectToProtectedUploadRoute( request: NextRequest, pathSegments: string[], ): Response { if (pathSegments.length === 1 && pathSegments[0] === 'health') { return new Response(request.method === 'HEAD' ? null : 'OK', { status: 200 }) } if ( pathSegments.length === 0 || pathSegments.some((segment) => !segment || segment === '.' || segment === '..' || /[\\/]/.test(segment)) ) { return new Response(request.method === 'HEAD' ? null : 'Forbidden', { status: 403 }) } const target = new URL( `/api/uploads/${pathSegments.map((segment) => encodeURIComponent(segment)).join('/')}`, request.url, ) target.search = request.nextUrl.search return Response.redirect(target, 307) } export async function GET( request: NextRequest, { params }: { params: { path?: string[] } }, ) { return redirectToProtectedUploadRoute(request, params.path || []) } export async function HEAD( request: NextRequest, { params }: { params: { path?: string[] } }, ) { return redirectToProtectedUploadRoute(request, params.path || []) }