import { NextRequest, NextResponse } from 'next/server'; async function proxyImage(imageUrl: string) { if (!imageUrl) { return NextResponse.json( { success: false, error: 'Missing url parameter' }, { status: 400 } ); } const imageResponse = await fetch(imageUrl); if (!imageResponse.ok) { return NextResponse.json( { success: false, error: 'Failed to fetch image from URL' }, { status: 400 } ); } const imageBuffer = await imageResponse.arrayBuffer(); const base64Image = Buffer.from(imageBuffer).toString('base64'); const contentType = imageResponse.headers.get('content-type') || 'image/jpeg'; return { base64Image, contentType, imageBuffer }; } export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url); const imageUrl = searchParams.get('url'); const result = await proxyImage(imageUrl!); if (result instanceof NextResponse) { return result; } return new NextResponse(result.imageBuffer, { status: 200, headers: { 'Content-Type': result.contentType, 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'public, max-age=3600' } }); } catch (error) { console.error('Image proxy error:', error); return NextResponse.json( { success: false, error: 'Internal server error' }, { status: 500 } ); } } export async function POST(request: NextRequest) { try { const body = await request.json(); const imageUrl = body.imageUrl; const result = await proxyImage(imageUrl); if (result instanceof NextResponse) { return result; } return NextResponse.json({ success: true, base64Image: `data:${result.contentType};base64,${result.base64Image}` }); } catch (error) { console.error('Image proxy POST error:', error); return NextResponse.json( { success: false, error: 'Internal server error' }, { status: 500 } ); } }