63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const providerHash = {
 | |
|   facebook: ({ id }) => id,
 | |
|   twitter: ({ username }) => username,
 | |
|   linkedin({ _json }) {
 | |
|     return _json && _json.publicProfileUrl || null;
 | |
|   },
 | |
|   google: ({ id }) => id
 | |
| };
 | |
| 
 | |
| export function getUsernameFromProvider(provider, profile) {
 | |
|   return typeof providerHash[provider] === 'function' ?
 | |
|     providerHash[provider](profile) :
 | |
|     null;
 | |
| }
 | |
| 
 | |
| // using es6 argument destructing
 | |
| export function setProfileFromGithub(
 | |
|   user,
 | |
|   {
 | |
|     profileUrl: githubURL,
 | |
|     username
 | |
|   },
 | |
|   {
 | |
|     id: githubId,
 | |
|     avatar_url: picture,
 | |
|     email: githubEmail,
 | |
|     created_at: joinedGithubOn,
 | |
|     blog: website,
 | |
|     location,
 | |
|     bio,
 | |
|     name
 | |
|   }
 | |
| ) {
 | |
|   return Object.assign(
 | |
|     user,
 | |
|     {
 | |
|       name,
 | |
|       email: user.email || githubEmail,
 | |
|       username: username.toLowerCase(),
 | |
|       location,
 | |
|       bio,
 | |
|       joinedGithubOn,
 | |
|       website,
 | |
|       isGithubCool: true,
 | |
|       picture,
 | |
|       githubId,
 | |
|       githubURL,
 | |
|       githubEmail,
 | |
|       githubProfile: githubURL
 | |
|     }
 | |
|   );
 | |
| }
 | |
| 
 | |
| export function getFirstImageFromProfile(profile) {
 | |
|   return profile && profile.photos && profile.photos[0] ?
 | |
|     profile.photos[0].value :
 | |
|     null;
 | |
| }
 | |
| 
 | |
| export function getSocialProvider(provider) {
 | |
|   return provider.split('-')[0];
 | |
| }
 |