Esempio n. 1
0
        public TimeSpan GetTimeToWaitFromQueryRateLimit(IEndpointRateLimit queryRateLimit, ITwitterExecutionContext executionContext)
        {
            if (queryRateLimit == null || queryRateLimit.Remaining > 0)
            {
                return(TimeSpan.Zero);
            }

            var timeToWaitInMs = (int)Math.Ceiling(queryRateLimit.ResetDateTimeInMilliseconds) + executionContext.RateLimitWaitFudge.TotalMilliseconds;

            return(TimeSpan.FromMilliseconds(timeToWaitInMs));
        }
Esempio n. 2
0
        public async Task WaitForCredentialsRateLimitAsync(IEndpointRateLimit queryRateLimit, IReadOnlyTwitterCredentials credentials, ITwitterExecutionContext executionContext)
        {
            var timeToWait = GetTimeToWaitFromQueryRateLimit(queryRateLimit, executionContext);

            if (timeToWait > TimeSpan.Zero)
            {
                executionContext.Events.RaiseWaitingForRateLimit(new WaitingForRateLimitEventArgs(null, queryRateLimit, credentials));
                await _taskDelayer.Delay(timeToWait).ConfigureAwait(false);
            }
        }
Esempio n. 3
0
        public async Task <TimeSpan> TimeToWaitBeforeTwitterRequestAsync(string query, IReadOnlyTwitterCredentials credentials, ITwitterExecutionContext twitterExecutionContext)
        {
            var queryRateLimits = await _rateLimitCacheManager.GetQueryRateLimitAsync(new GetEndpointRateLimitsParameters(query), credentials).ConfigureAwait(false);

            return(GetTimeToWaitFromQueryRateLimit(queryRateLimits, twitterExecutionContext));
        }
Esempio n. 4
0
 public TwitterExecutionContext(ITwitterExecutionContext context) : base(context)
 {
     RequestFactory = context.RequestFactory;
     Container      = context.Container;
     Events         = context.Events;
 }