import express from 'express'; import config from "../eventmapper_config.json" with { type: "json" }; const app = express(); app.use("/assets", express.static('assets')); app.use("/", express.static('pages')); app.use("/dataServer", express.static('data')); // Example data file-server app.get('/data/:lang/events/:floor', async (req, res) => { // Get events let eventsReq = await fetch(new URL(`events/${req.params.floor}.json`, config.data_url)); let events; if (eventsReq.ok) events = await eventsReq.json(); else return res.status(400).send("Bad Request"); // Merge events and localization const lang = req.params.lang; const merged = events.map(event => { event.name = event.lang[lang]?.name ?? ""; event.description = event.lang[lang]?.description ?? ""; event.url = event.lang[lang]?.url ?? ""; delete event.lang; return event; }); return res.send(merged); }) app.get('/data/:lang/floors', async (req, res) => { // Get layers let layersReq = await fetch(new URL("floors.json", config.data_url)); let layers; if (layersReq.ok) layers = await layersReq.json(); else return res.status(400).send("Bad Request"); // Merge layers and localization const lang = req.params.lang; const merged = layers.map(layer => { layer.name = layer.lang[lang]?.name ?? ""; layer.description = layer.lang[lang]?.description ?? ""; delete layer.lang; return layer; }); return res.send(merged); }) app.get('/data/:lang/rooms/:floor', async (req, res) => { // Get rooms let roomsReq = await fetch(new URL(`rooms/${req.params.floor}.json`, config.data_url)); let rooms; if (roomsReq.ok) rooms = await roomsReq.json(); else return res.status(400).send("Bad Request"); // Merge rooms and localization const lang = req.params.lang; const merged = rooms.map(room => { room.name = room.lang[lang]?.name ?? ""; room.description = room.lang[lang]?.description ?? ""; delete room.lang; return room; }); return res.send(merged); }) app.listen(config.port, () => { const listeningURL = new URL("http://localhost/"); listeningURL.port = config.port; console.log(`Example app listening on ${listeningURL.toString()}`) }) export default app;