aboutsummaryrefslogtreecommitdiffstats
path: root/app/routes
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2023-08-05 21:11:48 +0100
committerLeonardo Bishop <me@leonardobishop.com>2023-08-05 21:11:48 +0100
commit18cc5f69129615850e48a995f7c3406b74d8d2f4 (patch)
tree1fdc6eadae4b0a6da69319f9b6733379ced2e4c2 /app/routes
parent64c36dcef8ab1c0b985d79da627cecd30fd50336 (diff)
Redesign website
Diffstat (limited to 'app/routes')
-rw-r--r--app/routes/blog/router.ts19
-rw-r--r--app/routes/page/router.ts47
-rw-r--r--app/routes/special/router.ts79
-rw-r--r--app/routes/spotify/router.ts26
4 files changed, 53 insertions, 118 deletions
diff --git a/app/routes/blog/router.ts b/app/routes/blog/router.ts
new file mode 100644
index 0000000..bbd09d5
--- /dev/null
+++ b/app/routes/blog/router.ts
@@ -0,0 +1,19 @@
+import express from 'express';
+import { page } from '../../middlewares/index.js';
+import { blogs } from '../../middlewares/blogs.js';
+
+export const router = express.Router({ mergeParams: true });
+
+router.use('/blog/:page?', page);
+router.use('/blog/:page?', blogs);
+
+router.get('/blog/:page?', (req, res, next) => {
+ let page = res.locals.page;
+ let index = !page || res.locals.path === 'blog';
+
+ res.render('blog.ejs', {
+ index: index,
+ blogs: res.locals.blogs,
+ page: page,
+ });
+});
diff --git a/app/routes/page/router.ts b/app/routes/page/router.ts
index dc819f8..5c0a39b 100644
--- a/app/routes/page/router.ts
+++ b/app/routes/page/router.ts
@@ -1,51 +1,20 @@
import express from 'express';
-import { navbar, page } from '../../middlewares/index.js';
+import { 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) => {
- const page = res.locals.page;
-
- if (!page) {
- next();
- return;
- }
-
- res.type('text/plain');
- res.send(page.raw).end();
-});
-
-router.get('/:page?', navbar, (req, res, next) => {
- const page = res.locals.page;
-
+router.get('/:page?', (req, res, next) => {
+ let page = res.locals.page;
if (!page) {
next();
return;
- }
-
- let html: string;
- let title: string;
-
- if (page.metadata.errors.length != 0) {
- html = '<div class="box-red">This page could not be built due to the following errors:<br><ul>'
- page.metadata.errors.forEach(e => {
- html += `<li>${e.identifier}: ${e.message}</li>`
- });
- html += '</ul>Go <a href="/">home</a>?</div>'
- title = 'Page error'
- } else {
- html = page.html;
- title = page.metadata.displayTitle;
}
-
- res.render('page.ejs', {
- navbar: res.locals.navbarHtml,
- path: res.locals.path,
- content: html,
- title: title,
- buildTime: new Date(page.buildTime)
+
+ res.render('index.ejs', {
+ content: page.html,
+ stylesheets: page.metadata.stylesheets,
+ scripts: page.metadata.scripts,
});
});
diff --git a/app/routes/special/router.ts b/app/routes/special/router.ts
deleted file mode 100644
index 2015a35..0000000
--- a/app/routes/special/router.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import express from 'express';
-import { navbar, page } from '../../middlewares/index.js';
-import { logger } from './../../logger.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) => {
- const 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) => {
- const page = res.locals.page;
-
- if (!page) {
- next();
- return;
- }
-
- logger.info(`Purge for page ${page.standardName} requested by ${req.headers['x-forwarded-for'] || req.socket.remoteAddress }`)
- if (res.locals.directory.purge(res.locals.path)) {
- res.status(200).send();
- } else {
- res.status(429).send();
- }
-});
-
-router.use('/special/info/:page?', page);
-
-router.get('/special/info/:page?', navbar, (req, res, next) => {
- const page = res.locals.page;
-
- if (!page) {
- next();
- return;
- }
-
- res.render('pageinfo.ejs', {
- navbar: res.locals.navbarHtml,
- standardName: page.standardName,
- displayTitle: page.metadata.displayTitle,
- buildTime: page.buildTime,
- primary: page.metadata.includeInNavbar,
- showTitle: page.metadata.showTitle,
- sortOrder: page.metadata.sortOrder,
- dependencies: page.metadata.dependencies,
- dependents: page.metadata.dependents,
- errors: page.metadata.errors,
- });
-});
-
-router.get('/special/rebuild', navbar, (req, res) => {
- res.render('rebuild.ejs', {
- navbar: res.locals.navbarHtml
- });
-});
-
-router.get('/special/rebuild/confirm', (req, res) => {
- logger.info(`Directory rebuild requested by ${req.headers['x-forwarded-for'] || req.socket.remoteAddress }`)
- if (res.locals.directory.rebuild()) {
- res.status(200).send();
- } else {
- res.status(429).send();
- }
-});
diff --git a/app/routes/spotify/router.ts b/app/routes/spotify/router.ts
new file mode 100644
index 0000000..faf8f6d
--- /dev/null
+++ b/app/routes/spotify/router.ts
@@ -0,0 +1,26 @@
+import express from 'express';
+
+export const router = express.Router({ mergeParams: true });
+
+router.get('/spotify/auth', (req, res, next) => {
+ let scope = 'user-read-currently-playing';
+ let params = new URLSearchParams();
+ params.append('response_type', 'code');
+ params.append('client_id', process.env.SPOTIFY_CLIENT_ID);
+ params.append('scope', scope);
+ params.append('redirect_uri', process.env.SPOTIFY_REDIRECT_URI);
+
+ res.redirect('https://accounts.spotify.com/authorize?' + params.toString());
+});
+
+router.get('/spotify/auth/callback', (req, res, next) => {
+ if (req.query.error) {
+ res.send('Error: ' + req.query.error);
+ return;
+ }
+ if (!req.query.code) {
+ res.send('No code');
+ return;
+ }
+ res.send('Your authentication code: ' + req.query.code);
+});