import { NextRequest, NextResponse } from 'next/server' /** * Proxy for meetings API endpoints * Routes requests to the backend service to avoid mixed-content/CORS issues */ const BACKEND_URL = process.env.BACKEND_URL || 'http://localhost:8000' async function proxyRequest( request: NextRequest, params: { path: string[] } ): Promise { const path = params.path.join('/') const url = `${BACKEND_URL}/api/meetings/${path}` try { const headers: HeadersInit = { 'Content-Type': 'application/json', } // Forward authorization header if present const authHeader = request.headers.get('authorization') if (authHeader) { headers['Authorization'] = authHeader } const fetchOptions: RequestInit = { method: request.method, headers, } // Add body for POST/PUT/PATCH requests if (['POST', 'PUT', 'PATCH'].includes(request.method)) { fetchOptions.body = await request.text() } const response = await fetch(url, fetchOptions) // Get response data const contentType = response.headers.get('content-type') let data: string | ArrayBuffer if (contentType?.includes('application/json')) { data = await response.text() } else { data = await response.arrayBuffer() } // Return proxied response return new NextResponse(data, { status: response.status, headers: { 'Content-Type': contentType || 'application/json', }, }) } catch (error) { console.error(`Failed to proxy ${request.method} ${url}:`, error) return NextResponse.json( { error: 'Backend nicht erreichbar', details: error instanceof Error ? error.message : 'Unknown error' }, { status: 502 } ) } } export async function GET( request: NextRequest, context: { params: Promise<{ path: string[] }> } ) { const params = await context.params return proxyRequest(request, params) } export async function POST( request: NextRequest, context: { params: Promise<{ path: string[] }> } ) { const params = await context.params return proxyRequest(request, params) } export async function PUT( request: NextRequest, context: { params: Promise<{ path: string[] }> } ) { const params = await context.params return proxyRequest(request, params) } export async function DELETE( request: NextRequest, context: { params: Promise<{ path: string[] }> } ) { const params = await context.params return proxyRequest(request, params) }