EventMapper/scripts/server.js

104 lines
No EOL
2.7 KiB
JavaScript

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");
// Get localization
let l10nReq = await fetch(new URL(`localization/${req.params.lang}.json`, config.data_url));
let l10n;
if (l10nReq.ok)
l10n = await l10nReq.json();
else
return res.status(404).send("Localization not found!");
// Merge events and localization
const merged = events.map(event => {
const localizationKey = l10n.__events[event.id];
return {
...event,
...localizationKey
};
});
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");
// Get localization
let l10nReq = await fetch(new URL(`localization/${req.params.lang}.json`, config.data_url));
let l10n;
if (l10nReq.ok)
l10n = await l10nReq.json();
else
return res.status(404).send("Localization not found!");
// Merge layers and localization
const merged = layers.map(layer => {
const localizationKey = l10n.__layers[layer.id];
return {
...layer,
...localizationKey
};
});
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");
// Get localization
let l10nReq = await fetch(new URL(`localization/${req.params.lang}.json`, config.data_url));
let l10n;
if (l10nReq.ok)
l10n = await l10nReq.json();
else
return res.status(404).send("Localization not found!");
// Merge rooms and localization
const merged = rooms.map(room => {
const localizationKey = l10n.__rooms[room.id];
return {
...room,
...localizationKey
};
});
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()}`)
})