예제 #1
0
        public void ImportAllFavorites()
        {
            _favoritesRepository.Empty();

            string screenName = _configuration.GetScreenName();

            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey       = _configuration.GetOAuthConsumerKey(),
                    ConsumerSecret    = _configuration.GetOAuthConsumerSecret(),
                    AccessToken       = _configuration.GetOAuthToken(),
                    AccessTokenSecret = _configuration.GetOAuthTokenSecret()
                }
            };

            var twitterCtx = new TwitterContext(auth);

            var favorites = new List <TwitterFavorite>();

            var favsResponse = twitterCtx.Favorites
                               .Where(fav => fav.Type == FavoritesType.Favorites && fav.ScreenName == screenName)
                               .Select(f => new TwitterFavorite(f.StatusID, f.Text, f.User.Name, f.User.ScreenNameResponse, f.CreatedAt,
                                                                f.Entities.HashTagEntities.Select(h => h.Tag).ToList()))
                               .ToList();

            favorites.AddRange(favsResponse);

            while (favsResponse.Count > 0)
            {
                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(61));
                favsResponse = twitterCtx.Favorites
                               .Where(fav => fav.Type == FavoritesType.Favorites && fav.ScreenName == screenName && fav.MaxID == favsResponse.Last().Id)
                               .Select(f => new TwitterFavorite(f.StatusID, f.Text, f.User.Name, f.User.ScreenNameResponse, f.CreatedAt,
                                                                f.Entities.HashTagEntities.Select(h => h.Tag).ToList()))
                               .ToList();

                if (favsResponse.Any())
                {
                    favsResponse.RemoveAt(0);

                    favorites.AddRange(favsResponse);
                }
            }

            _favoritesRepository.Insert(favorites);
        }