JSSTE-examples/examples/example1.js

59 lines
1.7 KiB
JavaScript

let express = require("express");
let app = express();
let jsste = require("jsste");
const bodyParser = require("body-parser");
let path = require("path");
let fs = require("fs");
var decode = require("urldecode");
jsste.__config.set("templatePath", __dirname + "/templates");
jsste.__config.set("pagePath", __dirname + "/pages");
jsste.__config.set("assetsPath", "./assets");
jsste.__config.set("stylesheets", "./styles");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
let folders = {
jsste: "pages",
css: "styles",
};
function getFolderFromFileEnding(filename) {
let regex_isAnDotfile = /\w+\.[a-z]*[A-Z]*/;
if (regex_isAnDotfile.test(filename)) {
let ending = filename.split(".").pop();
return folders[ending];
}
return folders.jsste;
}
function defaultUse(req, res, next) {
let regex_isAnDotfile = /\w+\.[a-z]*[A-Z]*/;
let filePath = path.join(
__dirname.toString(),
getFolderFromFileEnding(req.url).toString(),
req.url.toString()
);
if (regex_isAnDotfile.test(req.url) && !filePath.endsWith(".jsste")) {
res.sendFile(filePath);
} else if (fs.existsSync(filePath + ".jsste")) {
let content = jsste.renderFile(filePath + ".jsste");
res.send(content);
} else if (fs.lstatSync(filePath).isDirectory()) {
let content = jsste.renderFile(decode(path.join(filePath, "index.jsste")));
res.send(content);
} else next();
}
app.get("/assets/*", (req, res) => {
console.log(req.url);
console.log(__dirname);
res.sendFile(decode(path.join(__dirname, req.url)));
});
app.get("/*", defaultUse);
app.listen(8000, function () {
console.log("Example app listening on port http://127.0.0.1:8000 !");
});