0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-10 23:36:14 -05:00

Use request lib in gravatar utility (#9337)

refs #9178
This commit is contained in:
Katharina Irrgang 2017-12-14 10:51:05 +01:00 committed by Kevin Ansfield
parent 228c1c16fd
commit 941379ddba

View file

@ -1,44 +1,31 @@
var Promise = require('bluebird'), var Promise = require('bluebird'),
config = require('../config'),
crypto = require('crypto'), crypto = require('crypto'),
https = require('https'); config = require('../config'),
request = require('../lib/request');
module.exports.lookup = function lookup(userData, timeout) { module.exports.lookup = function lookup(userData, timeout) {
var gravatarUrl = '//www.gravatar.com/avatar/' + var gravatarUrl = '//www.gravatar.com/avatar/' +
crypto.createHash('md5').update(userData.email.toLowerCase().trim()).digest('hex') + crypto.createHash('md5').update(userData.email.toLowerCase().trim()).digest('hex') +
'?s=250', image; '?s=250';
return new Promise(function gravatarRequest(resolve) {
if (config.isPrivacyDisabled('useGravatar')) { if (config.isPrivacyDisabled('useGravatar')) {
return resolve(); return Promise.resolve();
} }
var request, timer, timerEnded = false; return request('https:' + gravatarUrl + '&d=404&r=x', {timeout: timeout || 2 * 1000})
.then(function () {
request = https.get('https:' + gravatarUrl + '&d=404&r=x', function (response) {
clearTimeout(timer);
if (response.statusCode !== 404 && !timerEnded) {
gravatarUrl += '&d=mm&r=x'; gravatarUrl += '&d=mm&r=x';
image = gravatarUrl;
}
resolve({image: image}); return {
}); image: gravatarUrl
};
request.on('error', function () { })
clearTimeout(timer); .catch({statusCode: 404}, function () {
return {
// just resolve with no image url image: undefined
if (!timerEnded) { };
return resolve(); })
} .catch(function () {
}); // ignore error, just resolve with no image url
timer = setTimeout(function () {
timerEnded = true;
request.abort();
return resolve();
}, timeout || 2000);
}); });
}; };