import { NextRequest, NextResponse } from 'next/server' /** * API Proxy for BQAS (Voice Service) * Forwards requests to the voice-service running on port 8091 */ // Internal Docker network uses HTTP, nginx handles HTTPS termination externally const VOICE_SERVICE_URL = process.env.VOICE_SERVICE_URL || 'http://voice-service:8091' export async function GET( request: NextRequest, { params }: { params: Promise<{ path: string[] }> } ) { const { path } = await params const pathString = path.join('/') const searchParams = request.nextUrl.searchParams.toString() const url = `${VOICE_SERVICE_URL}/api/v1/bqas/${pathString}${searchParams ? `?${searchParams}` : ''}` try { const response = await fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }) if (!response.ok) { return NextResponse.json( { error: `Voice service returned ${response.status}` }, { status: response.status } ) } const data = await response.json() return NextResponse.json(data) } catch (error) { console.error('BQAS proxy error:', error) return NextResponse.json( { error: 'Failed to connect to voice service' }, { status: 503 } ) } } export async function POST( request: NextRequest, { params }: { params: Promise<{ path: string[] }> } ) { const { path } = await params const pathString = path.join('/') const url = `${VOICE_SERVICE_URL}/api/v1/bqas/${pathString}` try { let body = null try { body = await request.json() } catch { // No body is fine for some POST requests } const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: body ? JSON.stringify(body) : undefined, }) if (!response.ok) { return NextResponse.json( { error: `Voice service returned ${response.status}` }, { status: response.status } ) } const data = await response.json() return NextResponse.json(data) } catch (error) { console.error('BQAS proxy error:', error) return NextResponse.json( { error: 'Failed to connect to voice service' }, { status: 503 } ) } }