multi-avatar

0.1.8 • Public • Published

MultiAvatar - a nice way to fetch avatars

Build Status GitHub issues David David GitHub license


This library allows you to get user avatar URLs from various social-networks without diving into their APIs.

Supported providers

  • Facebook
  new FacebookAvatarProvider('FacebookUserID')
  • Google
  new GoogleAvatarProvider('GoogleUserID')
  • Twitter
  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

  1. Fork it!
  2. Create new branch: git checkout -b my-new-feature
  3. Commit changes: git commit -m 'Add new feature'
  4. Push it: git push origin my-new-feature
  5. Submit a pull request!

Package Sidebar

Install

npm i multi-avatar

Weekly Downloads

1

Version

0.1.8

License

MIT

Last publish

Collaborators

  • maksimkurb