const express = require('express'); const { VALID_EVENT_TYPES } = require('../constants/eventTypes'); const router = express.Router(); function createEventsRouter(db, manager, requireAnyKey) { router.post('/', requireAnyKey, async (req, res) => { try { const event = req.body; if (!event.event_type || !event.server_name || !event.timestamp || !event.data) { return res.status(400).json({ detail: 'Missing required event fields' }); } if (!VALID_EVENT_TYPES.has(event.event_type)) { return res.status(400).json({ detail: `Invalid event_type: ${event.event_type}` }); } db.logEvent(event, req.apiKey.id); const message = { type: 'minecraft_event', event: event, source_key_id_prefix: req.apiKey.id.substring(0, 8) }; await manager.broadcastToAll(message); res.json({ message: 'Event received and broadcasted' }); } catch (error) { res.status(500).json({ detail: error.message }); } }); return router; } module.exports = createEventsRouter;