const express = require('express'); const { authenticateToken } = require('../middleware/auth'); const router = express.Router(); const VOTE_APP_URL = process.env.VOTE_APP_URL; const VOTE_APP_API_KEY = process.env.VOTE_APP_API_KEY; router.get('/:sessionId', authenticateToken, async (req, res) => { const { sessionId } = req.params; if (!VOTE_APP_URL) { return res.status(503).json({ error: 'Vote app not configured' }); } try { const upstream = await fetch(`${VOTE_APP_URL}/stickerwalls/${sessionId}.png`); if (!upstream.ok) { return res.status(upstream.status).end(); } res.set('Content-Type', 'image/png'); const cacheControl = upstream.headers.get('cache-control'); if (cacheControl) { res.set('Cache-Control', cacheControl); } const buffer = Buffer.from(await upstream.arrayBuffer()); res.send(buffer); } catch (err) { console.error('Sticker wall GET proxy error:', err.message); res.status(502).json({ error: 'Failed to fetch sticker wall' }); } }); router.post('/:sessionId/render', authenticateToken, async (req, res) => { const { sessionId } = req.params; if (!VOTE_APP_URL || !VOTE_APP_API_KEY) { return res.status(503).json({ error: 'Vote app not configured' }); } try { const upstream = await fetch(`${VOTE_APP_URL}/api/stickerwalls/${sessionId}/render`, { method: 'POST', headers: { 'X-API-Key': VOTE_APP_API_KEY }, }); if (!upstream.ok) { return res.status(upstream.status).end(); } res.set('Content-Type', 'image/png'); const rendered = upstream.headers.get('x-sticker-wall-rendered'); if (rendered) { res.set('X-Sticker-Wall-Rendered', rendered); } const buffer = Buffer.from(await upstream.arrayBuffer()); res.send(buffer); } catch (err) { console.error('Sticker wall render proxy error:', err.message); res.status(502).json({ error: 'Failed to render sticker wall' }); } }); module.exports = router;