diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2023-08-05 21:11:48 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2023-08-05 21:11:48 +0100 |
| commit | 18cc5f69129615850e48a995f7c3406b74d8d2f4 (patch) | |
| tree | 1fdc6eadae4b0a6da69319f9b6733379ced2e4c2 /app/routes | |
| parent | 64c36dcef8ab1c0b985d79da627cecd30fd50336 (diff) | |
Redesign website
Diffstat (limited to 'app/routes')
| -rw-r--r-- | app/routes/blog/router.ts | 19 | ||||
| -rw-r--r-- | app/routes/page/router.ts | 47 | ||||
| -rw-r--r-- | app/routes/special/router.ts | 79 | ||||
| -rw-r--r-- | app/routes/spotify/router.ts | 26 |
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); +}); |
