guestbook rss feed
This commit is contained in:
parent
0843b798a4
commit
2125bc2eab
|
@ -36,6 +36,7 @@
|
||||||
"redis": "^4.6.4",
|
"redis": "^4.6.4",
|
||||||
"sequelize": "^7.0.0-alpha.9",
|
"sequelize": "^7.0.0-alpha.9",
|
||||||
"totp-generator": "^0.0.14",
|
"totp-generator": "^0.0.14",
|
||||||
"unit.js": "^2.1.1"
|
"unit.js": "^2.1.1",
|
||||||
|
"xml": "^1.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
const Helpers = require('../helpers');
|
const Helpers = require('../helpers');
|
||||||
const Sequelize = require('../models');
|
const Sequelize = require('../models');
|
||||||
const html_escape = require('html-escaper');
|
const html_escape = require('html-escaper');
|
||||||
|
const xml = require('xml');
|
||||||
|
|
||||||
const send_error = async (res, error) => {
|
const send_error = async (res, error) => {
|
||||||
return res.redirect('/guestbook?error=' + encodeURIComponent(error));
|
return res.redirect('/guestbook?error=' + encodeURIComponent(error));
|
||||||
|
@ -133,8 +134,47 @@ async function del(req, res, next) {
|
||||||
catch (err) { next(err); }
|
catch (err) { next(err); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function rss(req, res) {
|
||||||
|
const data = (await Sequelize.Guestbook.findAndCountAll({where: {hidden: false}})).rows;
|
||||||
|
|
||||||
|
let rss = [{
|
||||||
|
rss: [{
|
||||||
|
_attr: {version: '2.0'}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
channel: [
|
||||||
|
{title: 'Guestbook'},
|
||||||
|
{link: 'http://blek.codes/guestbook'},
|
||||||
|
{description: 'Alice\'s guestbook'},
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
|
||||||
|
for (const record of data) {
|
||||||
|
console.log(record);
|
||||||
|
if (record.hidemail)
|
||||||
|
record.email = ('?'.repeat(record.email.split('@')[0].length)) + '@?.?';
|
||||||
|
|
||||||
|
rss[0].rss[1].channel.push({
|
||||||
|
item: [
|
||||||
|
{description: record.text},
|
||||||
|
{author: `"${record.name}"${record.email ? (' at ' + record.email) : ''}`},
|
||||||
|
{link: req.protocol + '://' + req.get('host') + '/guestbook#gb_entry_' + record.id}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let ident = 4;
|
||||||
|
if (req.query.ident) ident = req.query.ident;
|
||||||
|
|
||||||
|
res.header('Content-Type', 'text/plain');
|
||||||
|
res.send(xml(rss, {indent: ' '.repeat(ident)}));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = (router) => {
|
module.exports = (router) => {
|
||||||
router.get('/guestbook', handler);
|
router.get('/guestbook', handler);
|
||||||
router.post('/guestbook/submit', submit);
|
router.post('/guestbook/submit', submit);
|
||||||
router.get('/guestbook/del/:id', del);
|
router.get('/guestbook/del/:id', del);
|
||||||
|
router.get('/guestbook.rss', rss);
|
||||||
}
|
}
|
Loading…
Reference in New Issue