diff --git a/routes/index.js b/routes/index.js index 5853639..3ab57f5 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,9 +1,10 @@ const express = require("express") -const router = express.Router() const metaService = require("../services/metaService") +const router = express.Router({ mergeParams: true }) -router.get("/", (req, res) => { - return res.status(200).json(metaService.getServerMetadata()) +router.get(/.*/, async (req, res, next) => { + const file = metaService.serveStaticFile(req.originalUrl) + return res.status(200).sendFile(file) }) module.exports = router \ No newline at end of file diff --git a/routes/metadata.js b/routes/metadata.js new file mode 100644 index 0000000..5853639 --- /dev/null +++ b/routes/metadata.js @@ -0,0 +1,9 @@ +const express = require("express") +const router = express.Router() +const metaService = require("../services/metaService") + +router.get("/", (req, res) => { + return res.status(200).json(metaService.getServerMetadata()) +}) + +module.exports = router \ No newline at end of file diff --git a/services/metaService.js b/services/metaService.js index 7a42c2c..57c7b84 100644 --- a/services/metaService.js +++ b/services/metaService.js @@ -1,3 +1,7 @@ +const fs = require("node:fs") +const path = require("node:path") +const { DefaultError } = require("../errors/errors") + function getServerMetadata() { return { name: process.env["INSTANCE_NAME"], @@ -5,6 +9,15 @@ function getServerMetadata() { } } +function serveStaticFile(filePath) { + const finalFilePath = path.join(process.cwd(), "data", "static", filePath) + if (fs.existsSync(finalFilePath)) { + return finalFilePath + } + throw new DefaultError(404, "File not found", "File moved/deleted or don't exists", "NotFoundException") +} + module.exports = { + serveStaticFile, getServerMetadata } \ No newline at end of file