import { NextResponse } from 'next/server' import { slskdFetch } from '@/lib/slskd' interface SlskdFile { filename: string size: number bitRate: number length: number } interface SlskdSearchResponse { username: string files: SlskdFile[] freeUploadSlots: number speed: number } export async function GET( _request: Request, { params }: { params: Promise<{ searchId: string }> } ) { const { searchId } = await params try { const res = await slskdFetch(`/searches/${searchId}`) if (!res.ok) { throw new Error(`slskd results returned ${res.status}`) } const data = await res.json() const isComplete = data.state === 'Completed' || data.state === 'TimedOut' // Flatten results: each response has username + files const results = (data.responses || []) .filter((r: SlskdSearchResponse) => r.files?.length > 0) .slice(0, 20) .map((r: SlskdSearchResponse) => ({ username: r.username, freeSlots: r.freeUploadSlots, speed: r.speed, files: r.files.slice(0, 5).map((f: SlskdFile) => ({ filename: f.filename, size: f.size, bitRate: f.bitRate, length: f.length, })), })) return NextResponse.json({ results, isComplete }) } catch (error) { console.error('Soulseek results error:', error) return NextResponse.json({ error: 'Failed to get results' }, { status: 502 }) } }