← back to Wine Finder Next
app/api/winebid/search/route.ts
55 lines
import { NextRequest, NextResponse } from 'next/server';
import { generateMockWineData } from '@/lib/services/mockWineData';
/**
* WineBid Auction Search API Route
* DEMO MODE: Using mock data until WineBid API access is configured
* TODO: Sign up for WineBid Partner/API access
*/
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 auction data for testing the UI
const mockWines = generateMockWineData(query);
const wineBidWines = mockWines.filter(w => w.providerName === 'WineBid');
console.log(`[WineBid DEMO] Returning ${wineBidWines.length} mock auction wines for query: ${query}`);
return NextResponse.json({ wines: wineBidWines });
// TODO: Implement actual WineBid API call
// Example structure:
// const response = await fetch(`https://api.winebid.com/v1/search?q=${encodeURIComponent(query)}`, {
// headers: {
// 'Authorization': `Bearer ${wineBidApiKey}`,
// 'Content-Type': 'application/json',
// },
// });
// const data = await response.json();
// const wines = data.results.map(item => ({
// id: `winebid-${item.id}`,
// name: item.name,
// vintage: item.vintage,
// provider: 'auction',
// providerName: 'WineBid',
// currentPrice: { amount: item.currentBid, currency: 'USD' },
// bidCount: item.bidCount,
// closingDate: item.auctionEndTime,
// url: item.url,
// lastUpdated: new Date().toISOString(),
// }));
// return NextResponse.json({ wines });
} catch (error) {
console.error('WineBid search error:', error);
return NextResponse.json({ wines: [] });
}
}