import type { NextRequest } from 'next/server' import { getStorageProvider } from '@admin/actions/storage/provider' import { decodeStorageKey } from '@admin/utils/storage/decode-storage-key' import { storageError } from '@admin/utils/storage/storage-error' import { NextResponse } from 'next/server' type SignedReadStorageProvider = ReturnType & { createReadUrl?: (storageKey: string) => Promise } export async function GET(request: NextRequest) { const encodedKey = request.nextUrl.pathname.split('/').filter(Boolean).at(-1) const key = encodedKey ? decodeStorageKey(encodedKey) : undefined const provider: SignedReadStorageProvider = getStorageProvider() if (!key || !provider.createReadUrl) { return storageError('Media object not found', 404) } try { const signedUrl = await provider.createReadUrl(key) return new NextResponse(null, { status: 307, headers: { Location: signedUrl, 'Cache-Control': 'no-store' } }) } catch { return storageError('Could not create a media read URL', 502) } }