import { NextResponse, type NextRequest } from "next/server"; import { reversePlace, searchPlaces } from "@/lib/weather/geocode"; import { badRequest, errorResponse, forbidCrossSite, parseCoords } from "@/lib/weather/respond"; /** * GET /api/geocode?q=Burnsville → Place[] (search by name) * GET /api/geocode?lat=44.7&lon=-93.2 → Place (name for coordinates) */ export async function GET(request: NextRequest) { const blocked = forbidCrossSite(request); if (blocked) return blocked; const params = request.nextUrl.searchParams; const query = params.get("q")?.trim(); try { if (query) { if (query.length < 2) return NextResponse.json([]); return NextResponse.json(await searchPlaces(query)); } const coords = parseCoords(params); if (!coords) return badRequest("Pass either q, or lat and lon"); return NextResponse.json(await reversePlace(coords.lat, coords.lon)); } catch (error) { return errorResponse(error); } }