const express = require('express') const siteMap = require('./siteMap') const compile = require('./compile'); const settings = require('./settings'); const { render } = require('ejs'); console.log(siteMap) const app = express() app.set('view engine', 'ejs'); app.set('views', __dirname + '/views') app.use('/:vak/static', renderStatic) app.use('/:vak/:page', renderPage) app.use('/:vak', renderVak) app.use('/', renderIndex) app.use(render404) function onError404(req, res, next){ return function(err){ render404(req, res, next) } } function renderStatic(req, res, next){ if(typeof siteMap[req.params.vak] == 'undefined') return next(); vak = siteMap[req.params.vak] dir = __dirname.split('/'); dir.pop() // remove dir of this code dir = `${dir.join('/')}/${vak.title}/notes/static${req.path}` res.sendFile(dir, onError404(req, res, next)) } function renderPage(req, res, next){ if(typeof siteMap[req.params.vak] == 'undefined') return next(); vak = siteMap[req.params.vak] if(typeof vak.pages[req.params.page] == 'undefined') return next(); page = vak.pages[req.params.page] compile(page, function(html){ if(typeof html != 'string'){ return next() } res.render('main', { siteMap, title: "notes", topNav: vak.pages, vak: req.params.vak, page: req.params.page, main: html }) }) } function renderVak(req, res, next){ if(typeof siteMap[req.params.vak] == 'undefined') return next(); vak = siteMap[req.params.vak] if(vak.index == null){ res.render('main', { siteMap, title: "notes", topNav: vak.pages, vak: req.params.vak, main: `

${vak.title}

` }) }else{ compile(vak.index, function(html){ if(typeof html != 'string'){ return next() } res.render('main', { siteMap, title: "notes", topNav: vak.pages, vak: req.params.vak, main: html }, onError404(req, res, next)) }) } } function renderIndex(req, res, next){ res.render('main', { siteMap, title: "notes", topNav: siteMap, main: "

Hoi

" }, onError404(req, res, next)) } function render404(req, res, next){ res.status(404) res.render('main', { siteMap, title: "notes", topNav: vak.pages, vak: req.params.vak, main: "

404 - Page not found

" }, (err) => { if(err){ res.send("

404 - Page not found

") } }) } app.listen(settings.serverPort, ()=>{console.log("server listening on", settings.serverPort)})