From 0c3b5cf476b77b547af34367c6fa94a26e2c5a80 Mon Sep 17 00:00:00 2001
From: Athanasios <ath.kouk.oid@gmail.com>
Date: Sun, 18 Apr 2021 11:59:10 +0200
Subject: [PATCH] Complete service

---
 config.js         |  6 +++---
 routes/nodes.js   |  9 ++++-----
 src/attributes.js |  2 +-
 src/default.js    | 10 +---------
 src/features.js   |  2 +-
 src/geometries.js |  2 +-
 src/handler.js    |  2 ++
 src/node.js       | 18 ++++++++++++++++++
 8 files changed, 31 insertions(+), 20 deletions(-)
 create mode 100644 src/node.js

diff --git a/config.js b/config.js
index 36c5001..4d80fe4 100644
--- a/config.js
+++ b/config.js
@@ -6,8 +6,8 @@ module.exports = {
     NODE: "3dNodeIndexDocument.json.gz",
     NODEPAGES: ".json.gz",
     SHARED: "sharedResource.json.gz",
-    FEATURES: "0.json.gz",
-    GEOMETRIES: "0.bin.gz",
-    ATTRIBUTES: "0.bin.gz"
+    FEATURES: ".json.gz",
+    GEOMETRIES: ".bin.gz",
+    ATTRIBUTES: ".bin.gz"
   }
 };
\ No newline at end of file
diff --git a/routes/nodes.js b/routes/nodes.js
index 15d5f06..0343fa1 100644
--- a/routes/nodes.js
+++ b/routes/nodes.js
@@ -3,10 +3,9 @@ const getHandler = require('../src/handler');
 
 let router = express.Router();
 
-router.route("/:nodeid/?").get((req, res) => {
+router.route("/:nodeid").get((req, res) => {
 
-  let param = req.params.nodeid;
-  let handler = getHandler(param);
+  let handler = getHandler("node");
   handler(req, res);
 
 });
@@ -19,7 +18,7 @@ router.route("/:nodeid/:resource").get((req, res) => {
 
 });
 
-router.route("/:nodeid/:resource/0").get((req, res) => {
+router.route("/:nodeid/:resource/:resourceid").get((req, res) => {
 
   let param = req.params.resource;
   let handler = getHandler(param);
@@ -27,7 +26,7 @@ router.route("/:nodeid/:resource/0").get((req, res) => {
 
 });
 
-router.route("/:nodeid/:resource/:resourceid/0").get((req, res) => {
+router.route("/:nodeid/:resource/:subresource/:subresourceid").get((req, res) => {
 
   let param = req.params.resource;
   let handler = getHandler(param);
diff --git a/src/attributes.js b/src/attributes.js
index dcb3789..a477475 100644
--- a/src/attributes.js
+++ b/src/attributes.js
@@ -4,7 +4,7 @@ const fs = require('fs');
 const handle = (req, res) => {
 
   let baseUrl = req.baseUrl.replace(/^\/?|\/?$/g, "");
-  let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.nodeid}/${req.params.resource}/${req.params.resourceid}/${config.FOLDER_INDEX.ATTRIBUTES}`;
+  let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.nodeid}/${req.params.resource}/${req.params.subresource}/${req.params.subresourceid}${config.FOLDER_INDEX.ATTRIBUTES}`;
   if (!fs.existsSync(resourse)) throw new Error("not found");
 
   res.set({
diff --git a/src/default.js b/src/default.js
index 5b52766..0bb6bde 100644
--- a/src/default.js
+++ b/src/default.js
@@ -3,15 +3,7 @@ const fs = require('fs');
 
 const handle = (req, res) => {
 
-  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({
-    'Content-Type': 'application/json',
-    'Content-Encoding': 'gzip'
-  });
-  res.sendFile(resourse);
+  throw new Error("not found");
 
 };
 
diff --git a/src/features.js b/src/features.js
index dd3e731..1c1ccd2 100644
--- a/src/features.js
+++ b/src/features.js
@@ -4,7 +4,7 @@ const fs = require('fs');
 const handle = (req, res) => {
 
   let baseUrl = req.baseUrl.replace(/^\/?|\/?$/g, "");
-  let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.nodeid}/${req.params.resource}/${config.FOLDER_INDEX.FEATURES}`;
+  let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.nodeid}/${req.params.resource}/${req.params.resourceid}${config.FOLDER_INDEX.FEATURES}`;
   if (!fs.existsSync(resourse)) throw new Error("not found");
 
   res.set({
diff --git a/src/geometries.js b/src/geometries.js
index c2bafda..e1f1ba7 100644
--- a/src/geometries.js
+++ b/src/geometries.js
@@ -4,7 +4,7 @@ const fs = require('fs');
 const handle = (req, res) => {
 
   let baseUrl = req.baseUrl.replace(/^\/?|\/?$/g, "");
-  let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.nodeid}/${req.params.resource}/${config.FOLDER_INDEX.GEOMETRIES}`;
+  let resourse = `${config.BASE_DIR}/${baseUrl}/${req.params.nodeid}/${req.params.resource}/${req.params.resourceid}${config.FOLDER_INDEX.GEOMETRIES}`;
   if (!fs.existsSync(resourse)) throw new Error("not found");
 
   res.set({
diff --git a/src/handler.js b/src/handler.js
index d646efc..26edda6 100644
--- a/src/handler.js
+++ b/src/handler.js
@@ -1,4 +1,5 @@
 const _default_ = require('./default');
+const node = require('./node');
 const nodepages = require('./nodepages');
 const shared = require('./shared');
 const features = require('./features');
@@ -9,6 +10,7 @@ const layers = require('./layers');
 
 const handlers = {
   _default_: _default_,
+  node: node,
   nodepages: nodepages,
   shared: shared,
   features: features,
diff --git a/src/node.js b/src/node.js
new file mode 100644
index 0000000..5b52766
--- /dev/null
+++ b/src/node.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.nodeid}/${config.FOLDER_INDEX.NODE}`;
+  if (!fs.existsSync(resourse)) throw new Error("not found");
+
+  res.set({
+    'Content-Type': 'application/json',
+    'Content-Encoding': 'gzip'
+  });
+  res.sendFile(resourse);
+
+};
+
+module.exports = handle;
-- 
GitLab