private static void HandleFailure(TwitterAPIEndpoint endpoint, UserRateLimitInfo userStatus, AuthenticationType?authTypeUsed, HttpResponseMessage response) { if (!response.IsSuccessStatusCode) { if (authTypeUsed.Value == AuthenticationType.Application) { RateLimitCache.Get[endpoint].Update(RateLimitCache.Get[endpoint].Limit - 1); } else { userStatus?.Update(userStatus.Limit - 1); } } }
private static void UpdateRateLimits(TwitterAPIEndpoint endpoint, UserRateLimitInfo userStatus, AuthenticationType?authTypeUsed, HttpResponseMessage response) { if (response.Headers.TryGetValues("x-rate-limit-remaining", out IEnumerable <string> remaining) && response.Headers.TryGetValues("x-rate-limit-reset", out IEnumerable <string> reset)) { if (int.TryParse(remaining.FirstOrDefault(), out int limitRemaining) && double.TryParse(reset.FirstOrDefault(), out double secondsUntilReset)) { if (authTypeUsed.Value == AuthenticationType.Application) { RateLimitCache.Get[endpoint].Update(limitRemaining, UntilEpochSeconds(secondsUntilReset)); } else { userStatus?.Update(limitRemaining, UntilEpochSeconds(secondsUntilReset)); } } } }