48 lines
1.3 KiB
JavaScript
Executable File
48 lines
1.3 KiB
JavaScript
Executable File
/**
|
|
* Parse profile.
|
|
*
|
|
* Parses user profiles as fetched from Google's Google+ API.
|
|
*
|
|
* The amount of detail in the profile varies based on the scopes granted by the
|
|
* user. The following scope values add additional data:
|
|
*
|
|
* `https://www.googleapis.com/auth/plus.login` - recommended login scope
|
|
* `profile` - basic profile information
|
|
* `email` - email address
|
|
*
|
|
* References:
|
|
* - https://developers.google.com/+/web/api/rest/latest/people/get
|
|
* - https://developers.google.com/+/web/api/rest/
|
|
* - https://developers.google.com/+/web/api/rest/oauth
|
|
*
|
|
* @param {object|string} json
|
|
* @return {object}
|
|
* @access public
|
|
*/
|
|
exports.parse = function(json) {
|
|
if ('string' == typeof json) {
|
|
json = JSON.parse(json);
|
|
}
|
|
|
|
var profile = {}
|
|
, i, len;
|
|
profile.id = json.id;
|
|
profile.displayName = json.displayName;
|
|
if (json.name) {
|
|
profile.name = { familyName: json.name.familyName,
|
|
givenName: json.name.givenName };
|
|
}
|
|
if (json.emails) {
|
|
profile.emails = [];
|
|
for (i = 0, len = json.emails.length; i < len; ++i) {
|
|
profile.emails.push({ value: json.emails[i].value, type: json.emails[i].type })
|
|
}
|
|
}
|
|
if (json.image) {
|
|
profile.photos = [{ value: json.image.url }];
|
|
}
|
|
profile.gender = json.gender;
|
|
|
|
return profile;
|
|
};
|