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