From e96ef66e4a67b45cb142fcfda2858bc184df831f Mon Sep 17 00:00:00 2001 From: Athanasios <ath.kouk.oid@gmail.com> Date: Sat, 17 Apr 2021 15:18:41 +0200 Subject: [PATCH] Complete service --- app.js | 2 ++ config.js | 1 + routes/nodepages.js | 21 +++++++++++++++++++++ src/default.js | 4 ++-- src/handler.js | 2 ++ src/nodepages.js | 18 ++++++++++++++++++ 6 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 routes/nodepages.js create mode 100644 src/nodepages.js diff --git a/app.js b/app.js index a73439a..6d32b1f 100644 --- a/app.js +++ b/app.js @@ -3,6 +3,7 @@ const config = require('./config') const cors = require("./src/cors"); const scenelayers = require("./routes/scenelayers"); const nodes = require("./routes/nodes"); +const nodepages = require("./routes/nodepages"); const errorHandler = require("./src/errorHandler"); const port = config.PORT || 9000; @@ -16,6 +17,7 @@ app.get("/favicon.ico", function (req, res) { app.use(cors); app.use("/scenelayers", scenelayers); app.use("*nodes", nodes); +app.use("*nodepages", nodepages); app.use(errorHandler); app.listen(port, err => { diff --git a/config.js b/config.js index d2a7fad..36c5001 100644 --- a/config.js +++ b/config.js @@ -4,6 +4,7 @@ module.exports = { FOLDER_INDEX: { SCENELAYER: "3dSceneLayer.json.gz", NODE: "3dNodeIndexDocument.json.gz", + NODEPAGES: ".json.gz", SHARED: "sharedResource.json.gz", FEATURES: "0.json.gz", GEOMETRIES: "0.bin.gz", diff --git a/routes/nodepages.js b/routes/nodepages.js new file mode 100644 index 0000000..96b7da0 --- /dev/null +++ b/routes/nodepages.js @@ -0,0 +1,21 @@ +const express = require("express"); +const getHandler = require('../src/handler'); + +let router = express.Router(); + +router.route("/:pagesid").get((req, res) => { + + let param = req.params.nodeid; + let handler = getHandler("nodepages"); + handler(req, res); + +}); + +router.route("*").get((req, res) => { + + res.sendStatus(404); + res.end(); + +}); + +module.exports = router; \ No newline at end of file diff --git a/src/default.js b/src/default.js index b9a1100..5b52766 100644 --- a/src/default.js +++ b/src/default.js @@ -3,8 +3,8 @@ const fs = require('fs'); const handle = (req, res) => { - let originalUrl = req.originalUrl.replace(/^\/?|\/?$/g, ""); - let resourse = `${config.BASE_DIR}/${originalUrl}/${config.FOLDER_INDEX.NODE}`; + let baseUrl = req.baseUrl.replace(/^\/?|\/?$/g, ""); + let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.nodeid}/${config.FOLDER_INDEX.NODE}`; if (!fs.existsSync(resourse)) throw new Error("not found"); res.set({ diff --git a/src/handler.js b/src/handler.js index 73554cd..d646efc 100644 --- a/src/handler.js +++ b/src/handler.js @@ -1,4 +1,5 @@ const _default_ = require('./default'); +const nodepages = require('./nodepages'); const shared = require('./shared'); const features = require('./features'); const geometries = require('./geometries'); @@ -8,6 +9,7 @@ const layers = require('./layers'); const handlers = { _default_: _default_, + nodepages: nodepages, shared: shared, features: features, geometries: geometries, diff --git a/src/nodepages.js b/src/nodepages.js new file mode 100644 index 0000000..96aadfa --- /dev/null +++ b/src/nodepages.js @@ -0,0 +1,18 @@ +const config = require('../config'); +const fs = require('fs'); + +const handle = (req, res) => { + + let baseUrl = req.baseUrl.replace(/^\/?|\/?$/g, ""); + let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.pagesid}${config.FOLDER_INDEX.NODEPAGES}`; + if (!fs.existsSync(resourse)) throw new Error("not found"); + + res.set({ + 'Content-Type': 'application/json', + 'Content-Encoding': 'gzip' + }); + res.sendFile(resourse); + +}; + +module.exports = handle; \ No newline at end of file -- GitLab