Пример #1
0
        async Task LoadTweets(Data.Model.TwitterUser twitterUser)
        {
            var lastTweetId = await _twitterRepository
                              .GetLastMessageIdAsync(twitterUser.TwitterId);

            var result = new List <Data.Model.Tweet>();

            var lastTweetIdToFilter = lastTweetId > 0 ? lastTweetId : (long?)null;

            IEnumerable <TwitterStatus> tweets = null;

            tweets = _twitterService.ListTweetsOnUserTimeline(CreateTimeLineOptions(twitterUser.TwitterId, lastTweetIdToFilter, null));

            result.AddRange(tweets
                            .Select(i => ParseFromTwitterStatus(twitterUser.Id, i)));

            // Paginate if there are more tweets to load
            while (tweets.Count() > 1)
            {
                var lastId = tweets
                             .Min(i => i.Id);

                tweets = _twitterService.ListTweetsOnUserTimeline(CreateTimeLineOptions(twitterUser.TwitterId, lastTweetIdToFilter, lastId));

                result.AddRange(tweets
                                .Select(i => ParseFromTwitterStatus(twitterUser.Id, i)));
            }

            await _twitterRepository.AddAsync(result);
        }