diff --git a/app.js b/app.js index a73439a839d5baf2f55680e3d6ba87f96a90d5f4..6d32b1f7b1cc427abac458f1a5d5dc4192264518 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 d2a7fad042fa5e010b4f27d010145299fef77cfc..36c50017accff88f970dec181957db6804c43e0a 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 0000000000000000000000000000000000000000..96b7da06956b0088070c833798b6f51c568d9deb --- /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 b9a11002ebd8f876cd838c7d1194e1e60e8dc24d..5b52766bb20b5d84a398500788f2c20decc5cd8e 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 73554cd0daadd1f8ba1af7e00448a9158e194aec..d646efc414046e9fc02313d58d9dc0e5f8397059 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 0000000000000000000000000000000000000000..96aadfaa89a143a7f245650d18764d817ae3e19d --- /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