import { NextResponse } from 'next/server'; import { getAdminAuth, getAdminStorage } from '@/lib/firebase/admin'; export async function GET( request: Request, { params }: { params: Promise<{ projectId: string }> } ) { try { const { projectId } = await params; // Authentication (skip in development if no auth header) const authHeader = request.headers.get('Authorization'); const isDevelopment = process.env.NODE_ENV === 'development'; if (!isDevelopment || authHeader?.startsWith('Bearer ')) { if (!authHeader?.startsWith('Bearer ')) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const token = authHeader.substring(7); const auth = getAdminAuth(); const decoded = await auth.verifyIdToken(token); if (!decoded?.uid) { return NextResponse.json({ error: 'Invalid token' }, { status: 401 }); } } // List files in Firebase Storage for this project let fileList = []; try { const storage = getAdminStorage(); const bucket = storage.bucket(); const [files] = await bucket.getFiles({ prefix: `projects/${projectId}/`, maxResults: 100, }); fileList = files.map(file => ({ name: file.name.split('/').pop() || file.name, fullPath: file.name, size: file.metadata.size, contentType: file.metadata.contentType, timeCreated: file.metadata.timeCreated, updated: file.metadata.updated, })); console.log('[API /storage/files] Found', fileList.length, 'files'); } catch (storageError) { console.error('[API /storage/files] Firebase Storage query failed:', storageError); console.error('[API /storage/files] This is likely due to missing Firebase Admin credentials'); // Return empty array instead of failing fileList = []; } return NextResponse.json({ success: true, files: fileList, count: fileList.length, }); } catch (error) { console.error('[API] Error fetching storage files:', error); return NextResponse.json( { error: 'Failed to fetch storage files' }, { status: 500 } ); } }