aboutsummaryrefslogtreecommitdiffstats
path: root/app/routes
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-12-21 15:16:27 +0000
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-12-21 15:16:27 +0000
commite70fd3594cfa8e0e29c3e9fb25991a9bad048469 (patch)
tree6984c870820526bfc48ced41cbd5c0a1c580ad4f /app/routes
parentf4b697f0e4248ecbeb9606a113d602e28c740b38 (diff)
Seperate router modules from index.ts
Diffstat (limited to 'app/routes')
-rw-r--r--app/routes/page/router.ts36
-rw-r--r--app/routes/special/router.ts52
2 files changed, 88 insertions, 0 deletions
diff --git a/app/routes/page/router.ts b/app/routes/page/router.ts
new file mode 100644
index 0000000..89cd59a
--- /dev/null
+++ b/app/routes/page/router.ts
@@ -0,0 +1,36 @@
+import express, { Router } from 'express';
+import { navbar, page } from '../../middlewares/index.js';
+
+export const router = express.Router({ mergeParams: true });
+
+router.use('/:page.wiki', page);
+router.use('/:page?', page);
+
+router.get('/:page.wiki', (req, res, next) => {
+ let page = res.locals.page;
+
+ if (!page) {
+ next();
+ return;
+ }
+
+ res.type('text/plain');
+ res.send(page.raw).end();
+});
+
+router.get('/:page?', navbar, (req, res, next) => {
+ let page = res.locals.page;
+
+ if (!page) {
+ next();
+ return;
+ }
+
+ res.render('page.ejs', {
+ navbar: res.locals.navbarHtml,
+ path: res.locals.path,
+ content: page.html,
+ title: page.metadata.displayTitle,
+ buildTime: new Date(page.buildTime)
+ });
+});
diff --git a/app/routes/special/router.ts b/app/routes/special/router.ts
new file mode 100644
index 0000000..1508ffa
--- /dev/null
+++ b/app/routes/special/router.ts
@@ -0,0 +1,52 @@
+import express, { Router } from 'express';
+import { navbar, page } from '../../middlewares/index.js';
+
+export const router = express.Router({ mergeParams: true });
+
+router.use('/special/purge/:page?', page);
+router.use('/special/purge/:page/confirm', page);
+
+router.get('/special/purge/:page?', navbar, (req, res, next) => {
+ let page = res.locals.page;
+
+ if (!page) {
+ next();
+ return;
+ }
+
+ res.render('purge.ejs', {
+ navbar: res.locals.navbarHtml,
+ page: res.locals.path,
+ buildTime: new Date(page.buildTime) ?? 'never',
+ buildTimeRelative: Math.round((Date.now() - page.buildTime) / 1000 / 60)
+ });
+});
+
+router.get('/special/purge/:page/confirm', (req, res, next) => {
+ let page = res.locals.page;
+
+ if (!page) {
+ next();
+ return;
+ }
+
+ if (res.locals.directory.purge(res.locals.path)) {
+ res.status(200).send();
+ } else {
+ res.status(429).send();
+ }
+});
+
+router.get('/special/rebuild', navbar, (req, res) => {
+ res.render('rebuild.ejs', {
+ navbar: res.locals.navbarHtml
+ });
+});
+
+router.get('/special/rebuild/confirm', (req, res) => {
+ if (res.locals.directory.rebuild()) {
+ res.status(200).send();
+ } else {
+ res.status(429).send();
+ }
+});