From f39e18a23f44adccc7d78622b9656028082f14be Mon Sep 17 00:00:00 2001 From: bihlink <95501288+bihlink@users.noreply.github.com> Date: Fri, 15 Jul 2022 17:06:14 +0200 Subject: [PATCH] Update index.js --- index.js | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/index.js b/index.js index 5141692..b641311 100644 --- a/index.js +++ b/index.js @@ -3,6 +3,8 @@ var Express = require('express'); var convert = require('./lib/convert'); // v2 api var convertv2 = require('./lib/convertv2'); +// v3 api +var convertv3 = require('./lib/convertv3'); var serveStatic = require('serve-static'); var request = require('request'); var cors = require('cors'); @@ -116,6 +118,69 @@ app.get('/apiv2/feed',cors(),logger,function(req,res){ }) }) +app.options('/apiv3/feed',cors()); +// http://localhost:8000/apiv3/feed?userurl=https%3A%2F%2Foctodon.social%2Fusers%2Ffenwick67 +app.get('/apiv3/feed',cors(),logger,function(req,res){ + + // get feed url + var userUrl = req.query.userurl; + + if (!userUrl){ + res.status(400); + res.send(errorPage(400,'You need to specify a user URL')); + return; + } + + var feedUrl = req.query.feedurl; + + var opts = {}; + if (req.query.size){ + opts.size = req.query.size; + } + if (req.query.theme){ + opts.theme = req.query.theme; + } + if (req.query.header){ + if (req.query.header.toLowerCase() == 'no' || req.query.header.toLowerCase() == 'false'){ + opts.header = false; + }else{ + opts.header = true; + } + } + + opts.boosts = true; + if (req.query.boosts){ + if (req.query.boosts.toLowerCase() == 'no' || req.query.boosts.toLowerCase() == 'false'){ + opts.boosts = false; + }else{ + opts.boosts = true; + } + } + + opts.replies = true; + if (req.query.replies){ + if (req.query.replies.toLowerCase() == 'no' || req.query.replies.toLowerCase() == 'false'){ + opts.replies = false; + }else{ + opts.replies = true; + } + } + opts.userUrl = userUrl; + opts.feedUrl = feedUrl; + opts.mastofeedUrl = req.url; + + convertv2(opts).then((data)=>{ + res.status(200); + doCache(res,60*60); + res.send(data); + }).catch((er)=>{ + res.status(500); + res.send(errorPage(500,null,{theme:opts.theme,size:opts.size})); + // TODO log the error + console.error(er,er.stack); + }) +}) + app.listen(process.env.PORT || 8000,function(){ console.log('Server started, listening on '+(process.env.PORT || 8000)); });