2016-02-12 23:04:26 +03:00
|
|
|
var Promise = require('bluebird'),
|
|
|
|
crypto = require('crypto'),
|
2017-12-14 22:46:53 +03:00
|
|
|
config = require('../../config'),
|
|
|
|
request = require('../request');
|
2016-02-12 23:04:26 +03:00
|
|
|
|
|
|
|
module.exports.lookup = function lookup(userData, timeout) {
|
|
|
|
var gravatarUrl = '//www.gravatar.com/avatar/' +
|
|
|
|
crypto.createHash('md5').update(userData.email.toLowerCase().trim()).digest('hex') +
|
2017-12-14 12:51:05 +03:00
|
|
|
'?s=250';
|
|
|
|
|
|
|
|
if (config.isPrivacyDisabled('useGravatar')) {
|
|
|
|
return Promise.resolve();
|
|
|
|
}
|
|
|
|
|
|
|
|
return request('https:' + gravatarUrl + '&d=404&r=x', {timeout: timeout || 2 * 1000})
|
|
|
|
.then(function () {
|
|
|
|
gravatarUrl += '&d=mm&r=x';
|
|
|
|
|
|
|
|
return {
|
|
|
|
image: gravatarUrl
|
|
|
|
};
|
|
|
|
})
|
|
|
|
.catch({statusCode: 404}, function () {
|
|
|
|
return {
|
|
|
|
image: undefined
|
|
|
|
};
|
|
|
|
})
|
|
|
|
.catch(function () {
|
|
|
|
// ignore error, just resolve with no image url
|
2016-02-12 23:04:26 +03:00
|
|
|
});
|
|
|
|
};
|