import { NextRequest, NextResponse } from 'next/server'; import Settings from 'settings'; export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url); const dynamicFilter = request.headers.get('x-search-dynamic-filter'); const dynamicExclude = request.headers.get('x-search-dynamic-exclude'); if (!dynamicFilter && !dynamicExclude) { return NextResponse.json( { error: 'Missing x-search-dynamic-filter or x-search-dynamic-exclude header' }, { status: 400 } ); } if (Settings.commerceUrl === 'default') { return NextResponse.json( { error: 'Commerce URL is not configured' }, { status: 500 } ); } const queryString = searchParams.toString(); const apiUrl = `${Settings.commerceUrl}/list${ queryString ? `?${queryString}` : '' }`; const headers: Record = { Accept: 'application/json', 'Content-Type': 'application/json' }; if (dynamicFilter) { headers['x-search-dynamic-filter'] = dynamicFilter; } else if (dynamicExclude) { headers['x-search-dynamic-exclude'] = dynamicExclude; } const response = await fetch(apiUrl, { method: 'GET', headers }); if (!response.ok) { return NextResponse.json( { error: `API request failed with status: ${response.status}` }, { status: response.status } ); } const data = await response.json(); return NextResponse.json(data); } catch (error) { return NextResponse.json( { error: (error as Error).message }, { status: 500 } ); } }