mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-21 06:11:45 +00:00
46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
import express, { Request, Response } from 'express';
|
|
import { authenticate } from '../middleware/auth';
|
|
import { getWeather, getDetailedWeather, ApiError } from '../services/weatherService';
|
|
|
|
const router = express.Router();
|
|
|
|
router.get('/', authenticate, async (req: Request, res: Response) => {
|
|
const { lat, lng, date, lang = 'de' } = req.query as { lat: string; lng: string; date?: string; lang?: string };
|
|
|
|
if (!lat || !lng) {
|
|
return res.status(400).json({ error: 'Latitude and longitude are required' });
|
|
}
|
|
|
|
try {
|
|
const result = await getWeather(lat, lng, date, lang);
|
|
res.json(result);
|
|
} catch (err: unknown) {
|
|
if (err instanceof ApiError) {
|
|
return res.status(err.status).json({ error: err.message });
|
|
}
|
|
console.error('Weather error:', err);
|
|
res.status(500).json({ error: 'Error fetching weather data' });
|
|
}
|
|
});
|
|
|
|
router.get('/detailed', authenticate, async (req: Request, res: Response) => {
|
|
const { lat, lng, date, lang = 'de' } = req.query as { lat: string; lng: string; date: string; lang?: string };
|
|
|
|
if (!lat || !lng || !date) {
|
|
return res.status(400).json({ error: 'Latitude, longitude, and date are required' });
|
|
}
|
|
|
|
try {
|
|
const result = await getDetailedWeather(lat, lng, date, lang);
|
|
res.json(result);
|
|
} catch (err: unknown) {
|
|
if (err instanceof ApiError) {
|
|
return res.status(err.status).json({ error: err.message });
|
|
}
|
|
console.error('Detailed weather error:', err);
|
|
res.status(500).json({ error: 'Error fetching detailed weather data' });
|
|
}
|
|
});
|
|
|
|
export default router;
|