/// <summary> /// Should return parsed <see cref="UserInfo"/> using content of callback issued by service. /// </summary> protected override UserInfo ParseUserInfo(string content) { var users = JsonConvert.DeserializeObject<UserContainer>(content); var userInfo = new UserInfo(); if (users != null && users.Users != null && users.Users.Count > 0) { userInfo.Id = users.Users[0].Id; userInfo.FirstName = users.Users[0].FirstName; userInfo.LastName = users.Users[0].LastName; userInfo.Email = users.Users[0].Email; if (users.Users[0].PhotoUrls != null) { userInfo.AvatarUri.Small = users.Users[0].PhotoUrls.Small; userInfo.AvatarUri.Normal = users.Users[0].PhotoUrls.Normal; userInfo.AvatarUri.Large = users.Users[0].PhotoUrls.Large; } } return userInfo; }
/// <summary> /// Should return parsed <see cref="UserInfo"/> using content received from provider. /// </summary> /// <param name="content">The content which is received from provider.</param> /// <returns>The found user information</returns> protected override UserInfo ParseUserInfo(string content) { var cnt = JObject.Parse(content); var names = cnt["name"].Value<string>().Split(' ').ToList(); const string avatarUriTemplate = "{0}&s={1}"; var avatarUri = cnt["avatar_url"].Value<string>(); var result = new UserInfo { Email = cnt["email"].SafeGet(x => x.Value<string>()), ProviderName = Name, Id = cnt["id"].Value<string>(), FirstName = names.Count > 0 ? names.First() : cnt["login"].Value<string>(), LastName = names.Count > 1 ? names.Last() : string.Empty, AvatarUri = { Small = !string.IsNullOrWhiteSpace(avatarUri) ? string.Format(avatarUriTemplate, avatarUri, AvatarInfo.SmallSize) : string.Empty, Normal = avatarUri, Large = !string.IsNullOrWhiteSpace(avatarUri) ? string.Format(avatarUriTemplate, avatarUri, AvatarInfo.LargeSize) : string.Empty } }; return result; }