2018-01-14 12:00:54 +00:00
|
|
|
require('dotenv').config();
|
|
|
|
const request = require('request');
|
|
|
|
const restify = require('restify');
|
|
|
|
const server = restify.createServer();
|
2018-01-14 13:25:23 +00:00
|
|
|
const Twitter = require('./twitter');
|
2018-01-14 13:25:32 +00:00
|
|
|
const fs = require('fs');
|
|
|
|
const showdown = require('showdown');
|
|
|
|
const md = new showdown.Converter();
|
2018-01-14 12:00:54 +00:00
|
|
|
|
2018-01-14 12:41:55 +00:00
|
|
|
const handleResponse = (profileURLs, req, res) => {
|
|
|
|
if (req.getContentType() === 'application/json') {
|
|
|
|
return res.send(profileURLs);
|
|
|
|
} else {
|
|
|
|
const imageURL = profileURLs[req.query.size] || profileURLs.original;
|
|
|
|
|
|
|
|
request
|
|
|
|
.get(imageURL)
|
|
|
|
.on('error', function(err) {
|
|
|
|
console.log(err);
|
|
|
|
})
|
|
|
|
.pipe(res);
|
|
|
|
}
|
|
|
|
};
|
2018-01-14 12:00:54 +00:00
|
|
|
|
2018-01-14 12:41:55 +00:00
|
|
|
server.use(restify.plugins.queryParser());
|
2018-01-14 12:00:54 +00:00
|
|
|
|
2018-01-14 14:12:38 +00:00
|
|
|
server.get(/^(\/|\/index.html)$/, function(req, res) {
|
2021-03-21 14:23:47 +00:00
|
|
|
fs.readFile(`${__dirname}/index.html`, { encoding: 'utf8' }, (err, data) => {
|
|
|
|
return res.sendRaw(data);
|
2018-01-14 13:25:32 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-01-14 12:00:54 +00:00
|
|
|
server.get('/:handle', async function (req, res) {
|
|
|
|
if (!req.params.handle) {
|
|
|
|
return res.send(400);
|
|
|
|
}
|
|
|
|
|
2018-01-14 13:25:23 +00:00
|
|
|
const profileURLs = await Twitter.getProfileURLs(req.params.handle);
|
2018-01-14 12:00:54 +00:00
|
|
|
|
2018-01-14 12:41:55 +00:00
|
|
|
return handleResponse(profileURLs, req, res);
|
|
|
|
});
|
2018-01-14 12:00:54 +00:00
|
|
|
|
2018-01-14 12:41:55 +00:00
|
|
|
server.get('/.+', function (req, res) {
|
2018-01-14 13:25:23 +00:00
|
|
|
return handleResponse(Twitter.defaultProfile, req, res);
|
2018-01-14 12:00:54 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
server.listen(process.env.PORT || 9090, function () {
|
|
|
|
console.log('ready on %s', server.url);
|
|
|
|
});
|
|
|
|
|
|
|
|
process.on('uncaughtException', function (err) {
|
|
|
|
console.log(err);
|
|
|
|
});
|
|
|
|
|
|
|
|
process.on('unhandledRejection', function (err) {
|
|
|
|
console.log(err);
|
|
|
|
});
|