mirror of
https://github.com/dariusk/rss-to-activitypub.git
synced 2024-11-30 04:29:19 +02:00
45 lines
1.7 KiB
JavaScript
45 lines
1.7 KiB
JavaScript
|
'use strict';
|
||
|
const express = require('express'),
|
||
|
router = express.Router(),
|
||
|
Parser = require('rss-parser'),
|
||
|
parser = new Parser();
|
||
|
|
||
|
router.get('/:guid', function (req, res) {
|
||
|
let guid = req.params.guid;
|
||
|
if (!guid) {
|
||
|
return res.status(400).send('Bad request.');
|
||
|
}
|
||
|
// render the raw JSON if JSON headers are passed
|
||
|
else if (req.headers.accept && (req.headers.accept.includes('application/activity+json') || req.headers.accept.includes('application/json') || req.headers.accept.includes('application/json+ld'))) {
|
||
|
let db = req.app.get('db');
|
||
|
let result = db.prepare('select message from messages where guid = ?').get(guid);
|
||
|
if (result === undefined) {
|
||
|
return res.status(404).send(`No record found for ${guid}.`);
|
||
|
}
|
||
|
else {
|
||
|
res.json(JSON.parse(result.message));
|
||
|
}
|
||
|
}
|
||
|
// render a human-friendly view otherwise
|
||
|
else {
|
||
|
let db = req.app.get('db');
|
||
|
let result = db.prepare('select message from messages where guid = ?').get(guid);
|
||
|
if (result === undefined) {
|
||
|
return res.status(404).send(`No record found for ${guid}.`);
|
||
|
}
|
||
|
else {
|
||
|
let message = JSON.parse(result.message);
|
||
|
let domain = req.app.get('domain');
|
||
|
let username = message.attributedTo.replace(`https://${domain}/u/`,'');
|
||
|
let resultFeed = db.prepare('select feed from feeds where username = ?').get(username);
|
||
|
if (resultFeed === undefined) {
|
||
|
return res.status(404).json(`Something went very wrong!`);
|
||
|
}
|
||
|
let feed = resultFeed.feed;
|
||
|
res.render('message', { description: message.content, feedUrl: feed, author: message.attributedTo, link: message.link});
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
module.exports = router;
|