← back to Wine Finder Next

app/api/winecom/search/route.ts

38 lines

import { NextRequest, NextResponse } from 'next/server';
import { generateMockWineData } from '@/lib/services/mockWineData';

/**
 * Wine.com Retail Search API Route
 * DEMO MODE: Using mock data until Wine.com Developer API is configured
 * TODO: Sign up for Wine.com Developer API at https://www.wine.com/content/affiliate-program
 */

export async function GET(request: NextRequest) {
  const searchParams = request.nextUrl.searchParams;
  const query = searchParams.get('q');

  if (!query) {
    return NextResponse.json({ error: 'Query parameter "q" is required' }, { status: 400 });
  }

  try {
    // DEMO: Generate mock data for testing the UI
    const mockWines = generateMockWineData(query);
    const wineComWines = mockWines.filter(w => w.providerName === 'Wine.com');

    console.log(`[Wine.com DEMO] Returning ${wineComWines.length} mock wines for query: ${query}`);

    return NextResponse.json({ wines: wineComWines });

    // TODO: Uncomment when Wine.com API key is available
    // const wineComApiKey = process.env.WINECOM_API_KEY;
    // const response = await fetch(`https://api.wine.com/v2/search?q=${encodeURIComponent(query)}`, {
    //   headers: { 'Authorization': `Bearer ${wineComApiKey}` }
    // });

  } catch (error) {
    console.error('Wine.com search error:', error);
    return NextResponse.json({ wines: [] });
  }
}