icons still

This commit is contained in:
Jake Kasper
2025-09-02 08:58:46 -05:00
parent d90403c8f9
commit 90af8fab02
2 changed files with 29 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
const express = require('express');
const axios = require('axios');
const router = express.Router();
// Public icon proxy so <img> tags don't need auth headers
// GET /api/weather/icon/:code?size=2x
router.get('/:code', async (req, res) => {
try {
const { code } = req.params;
const size = req.query.size === '2x' ? '@2x' : '';
if (!code || !/^[0-9]{2}[dn]$/.test(code)) {
return res.status(400).send('invalid icon code');
}
const url = `https://openweathermap.org/img/wn/${code}${size}.png`;
const resp = await axios.get(url, { responseType: 'arraybuffer', timeout: 5000 });
res.set('Content-Type', 'image/png');
res.set('Cache-Control', 'public, max-age=21600'); // 6h
return res.status(200).send(Buffer.from(resp.data));
} catch (e) {
return res.status(502).send('icon fetch failed');
}
});
module.exports = router;