async void FetchTweets_Loaded(object sender, RoutedEventArgs e) { var settings = ApplicationSettings.GetApplicationSettings(); twitterCtx = settings.Context; TweetsEraseType = settings.EraseType; //this.Title += " v" + settings.Version; if (twitterCtx == null) { MessageBox.Show("Internal error: Twitter context is null", "Twitter Archive Eraser"); } switch (TweetsEraseType) { case ApplicationSettings.EraseTypes.TweetsAndRetweets: throw new Exception("EraseTye should never be EraseTypes.TweetsAndRetweets here"); break; case ApplicationSettings.EraseTypes.Favorites: var user = await (from tweet in twitterCtx.User where tweet.Type == UserType.Show && tweet.UserID == settings.UserID select tweet) .SingleOrDefaultAsync(); int totalFavCount = 0; if (user != null) { totalFavCount = user.FavoritesCount; } lblTweetsType.Text = "favorites"; lblTweetsType2.Text = "favorites"; lblTweetsMax.Text = "3000"; lblTotalTweetsNB.Text = string.Format("(Your favorites count: {0})", totalFavCount); break; case ApplicationSettings.EraseTypes.DirectMessages: lblTweetsType.Text = "direct messages"; lblTweetsType2.Text = "DMs"; lblTweetsMax.Text = "1000 (800 sent, 200 received)"; lblTotalTweetsNB.Text = string.Format("(Your DM count: {0})", "N/A"); imgTwitterAuth2.Source = new BitmapImage(new Uri(@"pack://application:,,,/Twitter Archive Eraser;component/dm-icon.png")); imgTwitterAuth2.Margin = new Thickness(5); break; default: break; } //int numFavs = twitterCtx.User.Where(user => user.UserID == settings.UserID).FirstOrDefault().FavoritesCount; //txtTotalTweetsNB.Text = string.Format("(Your favorites count: {0})", numFavs); }
async void FetchTweets_Loaded(object sender, RoutedEventArgs e) { var settings = ApplicationSettings.GetApplicationSettings(); twitterCtx = settings.Context; TweetsEraseType = settings.EraseType; Title += " " + settings.Version; if(twitterCtx == null) { MessageBox.Show("Internal error: Twitter context is null", "Twitter Archive Eraser"); } switch (TweetsEraseType) { case ApplicationSettings.EraseTypes.TweetsAndRetweets: throw new Exception("EraseTye should never be EraseTypes.TweetsAndRetweets here"); break; case ApplicationSettings.EraseTypes.Favorites: var user = await (from tweet in twitterCtx.User where tweet.Type == UserType.Show && tweet.UserID == settings.UserID select tweet) .SingleOrDefaultAsync(); if (user != null) { userFavoritesCount = user.FavoritesCount; } lblTweetsType.Text = "favorites"; lblTweetsType2.Text = "favorites"; lblTweetsMax.Text = "3000"; lblTotalTweetsNB.Text = string.Format("(Your favorites count: {0})", userFavoritesCount); break; case ApplicationSettings.EraseTypes.DirectMessages: lblTweetsType.Text = "direct messages"; lblTweetsType2.Text = "DMs"; lblTweetsMax.Text = "1000 (800 sent, 200 received)"; lblTotalTweetsNB.Text = string.Format("(Your DM count: {0})", "N/A"); imgTwitterAuth2.Source = new BitmapImage(new Uri(@"pack://application:,,,/Twitter Archive Eraser;component/dm-icon.png")); imgTwitterAuth2.Margin = new Thickness(5); break; default: break; } //int numFavs = twitterCtx.User.Where(user => user.UserID == settings.UserID).FirstOrDefault().FavoritesCount; //txtTotalTweetsNB.Text = string.Format("(Your favorites count: {0})", numFavs); }
private bool ReachedTwitterLimits(ApplicationSettings.EraseTypes tweetsEraseType, out DateTime rateLimitReset) { var helpResponse = (from help in twitterCtx.Help where help.Type == HelpType.RateLimits select help) .SingleOrDefault(); if (helpResponse == null) { // fail quickly, assume limits are hit rateLimitReset = DateTime.Now.AddSeconds(15); // retry in 15 seconds return(true); } var favsRemainingLimits = helpResponse.RateLimits["favorites"].Where(limit => limit.Resource.ToLowerInvariant() == "/favorites/list").FirstOrDefault(); var sentDMsRemainingLimits = helpResponse.RateLimits["direct_messages"].Where(limit => limit.Resource.ToLowerInvariant() == "/direct_messages/sent").FirstOrDefault(); var receivedDMsRemainingLimits = helpResponse.RateLimits["direct_messages"].Where(limit => limit.Resource.ToLowerInvariant() == "/direct_messages").FirstOrDefault(); // The following is OK since the app works only in one given mode: either fetching favorites or DMs if (favsRemainingLimits.Remaining == 0) { rateLimitReset = FromUnixTime(favsRemainingLimits.Reset); return(true); } if (sentDMsRemainingLimits.Remaining == 0) { rateLimitReset = FromUnixTime(sentDMsRemainingLimits.Reset); return(true); } if (receivedDMsRemainingLimits.Remaining == 0) { rateLimitReset = FromUnixTime(receivedDMsRemainingLimits.Reset); return(true); } rateLimitReset = DateTime.UtcNow; return(false); }