private static FacebookLikes ConvertToFacebookLikes(dynamic d) { FacebookLikes flike = new FacebookLikes(); try { if (d.data != null) { for (int i = 0; i < d.data.Count; i++) { string id = d.data[i].id.ToString() ?? string.Empty; flike.Likes.Add(new Like() { Category = d.data[i].category.ToString() ?? string.Empty, Id = d.data[i].id.ToString() ?? string.Empty, Label = d.data[i].name.ToString() ?? string.Empty }); } } if (d.paging != null && d.paging.next != null) { flike.Next = d.paging.next.ToString(); } } catch (Exception e) { Logger.Current.Error("SocialGraph.ConvertToFacebookSocialGraph", "Could not convert dynamic object to FacebookLikes", e); } return(flike); }
public static FacebookOAuthResult <FacebookLikes> GetAllUserLikes(string facebookId, string accessToken) { FacebookOAuthResult <FacebookLikes> result = new FacebookOAuthResult <FacebookLikes>(); result.Data = new FacebookLikes(); IStopwatch watch = MonitoringTimers.Current.GetNewStopwatch(true); try { result.Data.Next = facebookId + "/likes?format=json&limit=5000"; do { dynamic d = GraphAPI.Get(result.Data.Next, accessToken); FacebookLikes pageResult = ConvertToFacebookLikes(d); if (pageResult.Likes != null && pageResult.Likes.Count > 0) { result.Data.Likes.AddRange(pageResult.Likes); result.Data.Next = pageResult.Next; if (pageResult.Likes.Count < 5000) { result.Data.Next = null; } } else { result.Data.Next = null; } }while (!string.IsNullOrEmpty(result.Data.Next)); } catch (FacebookOAuthException) { result.SetHasExpired(); } catch (Exception e) { result.HasError = true; Logger.Current.Error("SocialGraph.GetFriendIds", "Could not update a Facebook user's social graph", e); } finally { //TODO : ajouter un compteur sur le nombre de like récupérés watch.Stop(); MonitoringTimers.Current.AddTime(Counters.Facebook_GetUserLikes, watch); } return(result); }