예제 #1
0
 private static void DoLoadNewsFeed(string methodName, Dictionary <string, string> paramDict, Action <BackendResult <NewsFeedData, ResultCode> > callback)
 {
     VKRequestsDispatcher.DispatchRequestToVK <NewsFeedData>(methodName, paramDict, callback, (Func <string, NewsFeedData>)(jsonStr =>
     {
         List <int> resultCounts1;
         jsonStr = VKRequestsDispatcher.GetArrayCountsAndRemove(jsonStr, "photos", out resultCounts1);
         List <int> resultCounts2;
         jsonStr = VKRequestsDispatcher.GetArrayCountsAndRemove(jsonStr, "photo_tags", out resultCounts2);
         NewsFeedData response = JsonConvert.DeserializeObject <GenericRoot <NewsFeedData> >(jsonStr).response;
         NewsFeedType result1;
         if (Enum.TryParse <NewsFeedType>(response.feed_type, out result1))
         {
             response.FeedType = new NewsFeedType?(result1);
         }
         VKList <UserNotification> notifications = response.notifications;
         if ((notifications != null ? notifications.items :  null) != null)
         {
             foreach (UserNotification userNotification in response.notifications.items)
             {
                 UserNotificationType result2;
                 if (Enum.TryParse <UserNotificationType>(userNotification.type, out result2))
                 {
                     userNotification.Type = result2;
                 }
             }
         }
         return(response);
     }), false, true, new CancellationToken?(), null);
 }
예제 #2
0
        public void Search(string searchStr, int count, int startTime, int endTime, string startFrom, Action <BackendResult <NewsFeedData, ResultCode> > callback)
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>();

            parameters["q"]     = searchStr;
            parameters["count"] = count.ToString();
            if (startTime > 0)
            {
                parameters["start_time"] = startTime.ToString();
            }
            if (endTime > 0)
            {
                parameters["end_time"] = endTime.ToString();
            }
            if (!string.IsNullOrWhiteSpace("startFrom"))
            {
                parameters["start_from"] = startFrom.ToString();
            }
            parameters["extended"] = "1";
            VKRequestsDispatcher.DispatchRequestToVK <NewsFeedData>("newsfeed.search", parameters, callback, (Func <string, NewsFeedData>)(jsonStr =>
            {
                jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "items", false);
                NewsFeedData response = JsonConvert.DeserializeObject <GenericRoot <NewsFeedData> >(jsonStr).response;
                foreach (NewsItem newsItem in response.items)
                {
                    if (newsItem.user != null)
                    {
                        response.profiles.Add(newsItem.user);
                    }
                    if (newsItem.group != null)
                    {
                        response.groups.Add(newsItem.group);
                    }
                }
                return(response);
            }), false, true, new CancellationToken?(), null);
        }
예제 #3
0
        private async Task <bool> ProcessHomeFeed(DownloadHomeFeedOperation downloadHomeFeedOperation)
        {
            try
            {
                List <Task>          taskList = new List <Task>();
                FeedOperationDetails op       = downloadHomeFeedOperation.FeedOperationDetails;
                BackendResult <NewsFeedData, ResultCode> res = await NewsFeedService.Current.GetNewsFeed(this.CreateNewsFeedGetParams(op));

                if (res.ResultCode == ResultCode.Succeeded)
                {
                    NewsFeedData newsFeedData = res.ResultData;
                    Feed         feed         = await SocialManager.OpenHomeFeedAsync(op);

                    foreach (NewsItem newsFeedItem in newsFeedData.items)
                    {
                        FeedItem feedItem = this.CreateFeedItem(newsFeedItem, newsFeedData.groups, newsFeedData.profiles);
                        if (feedItem != null)
                        {
                            ((ICollection <FeedItem>)feed.Items).Add(feedItem);
                        }
                    }
                    if (((IEnumerable <FeedItem>)feed.Items).Any <FeedItem>())
                    {
                        RemoteIdHelper.NewsFeedNewFromData.Instance.SetParams(((IEnumerable <FeedItem>)feed.Items).Last <FeedItem>().RemoteId, res.ResultData.new_offset, res.ResultData.next_from);
                    }
                    await feed.SaveAsync();

                    newsFeedData = (NewsFeedData)null;
                }
                return(res.ResultCode == ResultCode.Succeeded);
            }
            catch
            {
                Debugger.Break();
                return(false);
            }
        }