multi-avatar
v0.1.8
Published
Package to fetch user avatars from various social-sites
Downloads
8
Maintainers
Readme
MultiAvatar - a nice way to fetch avatars
This library allows you to get user avatar URLs from various social-networks without diving into their APIs.
Supported providers
new FacebookAvatarProvider('FacebookUserID')
new GoogleAvatarProvider('GoogleUserID')
new TwitterAvatarProvider('TwitterUsername') // without '@', e.g. 'IGN' or 'pcgamer'
- Vkontakte
new VkAvatarProvider('VkID')
Installation
npm install multi-avatar
How to fetch user avatar URL
Some services forces us to make a API-requests. This is why library uses Promises (any-promise) and URLs caching. (Caching works only if you use the same instance of AvatarProvider between avatar requests)
import multiAvatar, { FacebookAvatarProvider, GoogleAvatarProvider } from 'multi-avatar'; // ES7
// or
var multiAvatar = require('multi-avatar'),
FacebookAvatarProvider = multiAvatar.FacebookAvatarProvider,
GoogleAvatarProvider = multiAvatar.GoogleAvatarProvider;
// Basic using:
multiAvatar(new FacebookAvatarProvider('100008343750912')) // ID should be always a string, because it can be larger, than Number.MAX_VALUE
.withSize(64)
.then(function (avatars) {
console.log('URL:', avatars.facebook); // URL: https://graph.facebook.com/.../picture?width=64
});
// Fetching multiple avatars from different providers
multiAvatar([
new FacebookAvatarProvider('100008343750912'),
new GoogleAvatarProvider('116933859726289749306')
])
.withSize(512)
.then(function (avatars) {
console.log(avatars);
// Output:
// {
// facebook: 'https://graph.facebook.com/100008343750912/picture?width=512',
// google: 'https://lh3.googleusercontent.com/-t4mT2nC4NkI/AAAAAAAAAAI/AAAAAAAAAAA/4DSxgN3cZmY/s512-c/116933859726289749306.jpg'
// }
});
// Fetching several sizes of avatar
multiAvatar([
new FacebookAvatarProvider('100008343750912')
])
.withSizes([64, 120]) // Note "s" at the end
.then(function (avatars) {
console.log(avatars);
// Output:
// {
// facebook: {
// '64': 'https://graph.facebook.com/100008343750912/picture?width=64',
// '120': 'https://graph.facebook.com/100008343750912/picture?width=120'
// }
// }
});
// Fetching several sizes of avatar from several providers
multiAvatar([
new FacebookAvatarProvider('100008343750912'),
new GoogleAvatarProvider('116933859726289749306')
])
.withSizes([50, 150])
.then(function (avatars) {
console.log(avatars);
// Output:
// {
// facebook: {
// '50': 'https://graph.facebook.com/100008343750912/picture?width=50',
// '150': 'https://graph.facebook.com/100008343750912/picture?width=150'
// },
// google: {
// '50': 'https://lh3.googleusercontent.com/-t4mT2nC4NkI/AAAAAAAAAAI/AAAAAAAAAAA/4DSxgN3cZmY/s50-c/116933859726289749306.jpg',
// '150': 'https://lh3.googleusercontent.com/-t4mT2nC4NkI/AAAAAAAAAAI/AAAAAAAAAAA/4DSxgN3cZmY/s150-c/116933859726289749306.jpg'
// }
// }
});
// Error handling:
multiAvatar(new GoogleAvatarProvider('non_exists_user'))
.withSize(64)
.then(function (avatars) {
console.log(avatars);
// {
// google: null
// }
});
NOTE: only google and vk can return null, because they depends on JSON-request, so we can determine, that user is not exists. Other providers just return broken image or something like that.
Contribute
- Fork it!
- Create new branch:
git checkout -b my-new-feature
- Commit changes:
git commit -m 'Add new feature'
- Push it:
git push origin my-new-feature
- Submit a pull request!