Files
Benjamin Boenisch 5a31f52310 Initial commit: breakpilot-lehrer - Lehrer KI Platform
Services: Admin-Lehrer, Backend-Lehrer, Studio v2, Website,
Klausur-Service, School-Service, Voice-Service, Geo-Service,
BreakPilot Drive, Agent-Core

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 23:47:26 +01:00

87 lines
2.2 KiB
TypeScript

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 }
)
}
}