1
0
mirror of https://github.com/moparisthebest/kaiwa synced 2024-11-12 04:25:05 -05:00
kaiwa/clientapp/helpers/fetchAvatar.js
2014-01-05 03:10:57 -08:00

73 lines
1.9 KiB
JavaScript

/*global app*/
"use strict";
var crypto = require('crypto');
function fallback(jid) {
var gID = crypto.createHash('md5').update(jid).digest('hex');
return {
uri: 'https://gravatar.com/avatar/' + gID + '?s=80&d=mm'
};
}
module.exports = function (jid, id, type, source, cb) {
if (!id) {
return cb(fallback(jid));
}
app.storage.avatars.get(id, function (err, avatar) {
if (!err) {
return cb(avatar);
}
if (!type) {
return cb(fallback(jid));
}
app.whenConnected(function () {
if (source == 'vcard') {
app.api.getVCard(jid, function (err, resp) {
if (err) {
return cb(fallback(jid));
}
resp = resp.toJSON();
type = resp.vCardTemp.photo.type || type;
var data = resp.vCardTemp.photo.data;
var uri = 'data:' + type + ';base64,' + data;
avatar = {
id: id,
type: type,
uri: uri
};
app.storage.avatars.add(avatar);
return cb(avatar);
});
} else {
app.api.getAvatar(jid, id, function (err, resp) {
if (err) {
return cb(fallback(jid));
}
resp = resp.toJSON();
var data = resp.pubsub.retrieve.item.avatarData;
var uri = 'data:' + type + ';base64,' + data;
avatar = {
id: id,
type: type,
uri: uri
};
app.storage.avatars.add(avatar);
return cb(avatar);
});
}
});
});
};