private void QueryCompleted(
            ITwitterRequest request,
            ITwitterResponse twitterResponse,
            IRateLimitUpdater rateLimitUpdater)
        {
            if (request.ExecutionContext.RateLimitTrackerMode != RateLimitTrackerMode.None)
            {
                var rateLimitHeaders = twitterResponse.Headers.Where(kvp => kvp.Key.StartsWith("x-rate-limit-")).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

                rateLimitUpdater.QueryExecutedAsync(request.Query.Url, request.Query.TwitterCredentials, rateLimitHeaders);
            }

            request.ExecutionContext.Events.RaiseAfterExecutingQuery(new AfterExecutingQueryEventArgs(request.Query, twitterResponse.Content, twitterResponse.Headers));
        }
Beispiel #2
0
        private async Task HandleException(
            ITwitterRequest request,
            TwitterException exception,
            IRateLimitUpdater rateLimitUpdater)
        {
            var       statusCode = exception.StatusCode;
            const int tooManyRequestStatusCode = 429;

            if (request.ExecutionContext.RateLimitTrackerMode != RateLimitTrackerMode.None && statusCode == tooManyRequestStatusCode)
            {
                await rateLimitUpdater.ClearRateLimitsForQueryAsync(request.Query.Url, request.Query.TwitterCredentials).ConfigureAwait(false);
            }

            request.ExecutionContext.Events.RaiseAfterExecutingQuery(new AfterExecutingQueryExceptionEventArgs(request.Query, exception));
        }
 public TwitterRequestHandler(
     ITweetinviEvents tweetinviEvents,
     IRateLimitAwaiter rateLimitAwaiter,
     IRateLimitUpdater rateLimitUpdater,
     ITwitterRequester twitterRequester,
     ICredentialsAccessor credentialsAccessor,
     ITweetinviSettingsAccessor tweetinviSettingsAccessor,
     ITwitterQueryFactory twitterQueryFactory)
 {
     _tweetinviEvents = tweetinviEvents;
     _rateLimitAwaiter = rateLimitAwaiter;
     _rateLimitUpdater = rateLimitUpdater;
     _twitterRequester = twitterRequester;
     _credentialsAccessor = credentialsAccessor;
     _tweetinviSettingsAccessor = tweetinviSettingsAccessor;
     _twitterQueryFactory = twitterQueryFactory;
 }
Beispiel #4
0
 public TwitterRequestHandler(
     ITweetinviEvents tweetinviEvents,
     IRateLimitAwaiter rateLimitAwaiter,
     IRateLimitUpdater rateLimitUpdater,
     ITwitterRequester twitterRequester,
     ICredentialsAccessor credentialsAccessor,
     ITweetinviSettingsAccessor tweetinviSettingsAccessor,
     ITwitterQueryFactory twitterQueryFactory)
 {
     _tweetinviEvents           = tweetinviEvents;
     _rateLimitAwaiter          = rateLimitAwaiter;
     _rateLimitUpdater          = rateLimitUpdater;
     _twitterRequester          = twitterRequester;
     _credentialsAccessor       = credentialsAccessor;
     _tweetinviSettingsAccessor = tweetinviSettingsAccessor;
     _twitterQueryFactory       = twitterQueryFactory;
 }
 public TwitterRequestHandler(
     ITweetinviEvents tweetinviEvents,
     IRateLimitAwaiter rateLimitAwaiter,
     IRateLimitUpdater rateLimitUpdater,
     IRateLimitCacheManager rateLimitCacheManager,
     IWebRequestExecutor webRequestExecutor,
     ICredentialsAccessor credentialsAccessor,
     ITweetinviSettingsAccessor tweetinviSettingsAccessor,
     ITwitterQueryFactory twitterQueryFactory,
     IOAuthWebRequestGenerator oAuthWebRequestGenerator)
 {
     _tweetinviEvents           = tweetinviEvents;
     _rateLimitAwaiter          = rateLimitAwaiter;
     _rateLimitUpdater          = rateLimitUpdater;
     _rateLimitCacheManager     = rateLimitCacheManager;
     _webRequestExecutor        = webRequestExecutor;
     _credentialsAccessor       = credentialsAccessor;
     _tweetinviSettingsAccessor = tweetinviSettingsAccessor;
     _twitterQueryFactory       = twitterQueryFactory;
     _oAuthWebRequestGenerator  = oAuthWebRequestGenerator;
 }
Beispiel #6
0
        private async Task QueryCompleted(
            ITwitterRequest request,
            ITwitterResponse twitterResponse,
            IRateLimitUpdater rateLimitUpdater)
        {
            if (request.ExecutionContext.RateLimitTrackerMode != RateLimitTrackerMode.None)
            {
                var credentials      = request.Query.TwitterCredentials;
                var rateLimitHeaders = twitterResponse.Headers
                                       .Where(kvp => kvp.Key.StartsWith("x-rate-limit-"))
                                       .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

                await rateLimitUpdater.QueryExecutedAsync(request.Query.Url, credentials, rateLimitHeaders).ConfigureAwait(false);

                if (request.Query.QueryRateLimit == null)
                {
                    var getEndPointParameters = new GetEndpointRateLimitsParameters(request.Query.Url);
                    request.Query.QueryRateLimit = await _rateLimitCacheManager.GetQueryRateLimitAsync(getEndPointParameters, credentials).ConfigureAwait(false);
                }
            }

            request.ExecutionContext.Events.RaiseAfterExecutingQuery(new AfterExecutingQueryEventArgs(request.Query, twitterResponse.Content, twitterResponse.Headers));
        }