示例#1
0
 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);
         }
     }
 }
示例#2
0
 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));
             }
         }
     }
 }