import { Router } from 'express' import axios from 'axios' const router = Router() router.get('/current', async (_req, res) => { try { const location = process.env.WEATHER_LOCATION if (!location) { res.status(503).json({ error: 'WEATHER_LOCATION not configured' }) return } const response = await axios.get( `https://wttr.in/${encodeURIComponent(location)}?format=j1`, { headers: { Accept: 'application/json' }, timeout: 8000 } ) const data = response.data const c = data.current_condition[0] const area = data.nearest_area?.[0] const today = data.weather?.[0] const hourly = (today?.hourly ?? []).map((h: Record) => ({ hour: Math.floor(Number(h.time) / 100), tempC: Number(h.tempC), code: Number(h.weatherCode), desc: (h.weatherDesc as { value: string }[])[0]?.value ?? '', })) res.json({ tempC: Number(c.temp_C), feelsLikeC: Number(c.FeelsLikeC), humidity: Number(c.humidity), windKmph: Number(c.windspeedKmph), desc: c.weatherDesc[0].value as string, code: Number(c.weatherCode), city: area?.areaName?.[0]?.value ?? location, todayMin: Number(today?.mintempC ?? c.temp_C), todayMax: Number(today?.maxtempC ?? c.temp_C), hourly, }) } catch (err: unknown) { const msg = err instanceof Error ? err.message : 'Unknown error' res.status(500).json({ error: msg }) } }) export default router