2019-04-13 15:28:56 -04:00
|
|
|
// Generated by CoffeeScript 1.8.0
|
|
|
|
(function() {
|
|
|
|
var DEV, Mercury, app, log, server;
|
|
|
|
|
|
|
|
Mercury = require('@postlight/mercury-parser');
|
|
|
|
|
|
|
|
app = require('express')();
|
|
|
|
|
|
|
|
server = require('http').Server(app);
|
|
|
|
|
|
|
|
log = require('./log.js');
|
|
|
|
|
|
|
|
DEV = process.env.NODE_ENV === 'development';
|
|
|
|
|
|
|
|
log.debug("Starting NewsBlur Original Text Fetcher / Mercury Parser...");
|
|
|
|
|
|
|
|
if (!DEV && !process.env.NODE_ENV) {
|
|
|
|
log.debug("Specify NODE_ENV=<development,production>");
|
|
|
|
return;
|
|
|
|
} else if (DEV) {
|
|
|
|
log.debug("Running as development server");
|
|
|
|
} else {
|
|
|
|
log.debug("Running as production server");
|
|
|
|
}
|
|
|
|
|
|
|
|
app.get(/\/rss_feeds\/original_text_fetcher\/?/, (function(_this) {
|
|
|
|
return function(req, res) {
|
|
|
|
var api_key, url;
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
2019-04-13 16:01:51 -04:00
|
|
|
if (req.query.test) {
|
|
|
|
return res.end("OK");
|
|
|
|
}
|
2019-04-13 15:28:56 -04:00
|
|
|
url = req.query.url;
|
|
|
|
if (!url) {
|
|
|
|
log.debug("Missing url");
|
2019-04-13 16:01:51 -04:00
|
|
|
return res.end(JSON.stringify({
|
2019-04-13 15:28:56 -04:00
|
|
|
error: "Missing `url` query parameter."
|
|
|
|
}));
|
|
|
|
}
|
2019-04-13 19:35:58 -04:00
|
|
|
api_key = req.header('x-api-key') || req.query.apikey;
|
2019-04-13 16:30:33 -04:00
|
|
|
if (!DEV && (!api_key || api_key.indexOf("djtXZrSIEfDa3Dex9FQ9AR") === -1)) {
|
2019-04-13 16:26:53 -04:00
|
|
|
log.debug("Mismatched API key: " + url + " / " + api_key);
|
2019-04-13 16:01:51 -04:00
|
|
|
return res.end(JSON.stringify({
|
2019-04-13 15:28:56 -04:00
|
|
|
error: "Invalid API key. You need to set up your own Original Text server."
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
return Mercury.parse(url).then(function(result) {
|
|
|
|
log.debug("Fetched: " + url);
|
|
|
|
return res.end(JSON.stringify(result));
|
|
|
|
});
|
|
|
|
};
|
|
|
|
})(this));
|
|
|
|
|
|
|
|
app.listen(4040);
|
|
|
|
|
|
|
|
}).call(this);
|