public NetworkController( ICookiesController cookieController, IUriController uriController, IConstrainAsyncDelegate <string> constrainRequestRateAsyncDelegate) { this.cookieController = cookieController; this.uriController = uriController; this.constrainRequestRateAsyncDelegate = constrainRequestRateAsyncDelegate; var httpHandler = new HttpClientHandler { UseDefaultCredentials = false }; client = new HttpClient(httpHandler); client.DefaultRequestHeaders.ExpectContinue = false; client.DefaultRequestHeaders.Add(Headers.UserAgent, HeaderDefaultValues.UserAgent); }
public ConstrainRequestRateAsyncDelegate( IConstrainAsyncDelegate <int> constrainExecutionAsyncDelegate, ICollectionController collectionController, IStatusController statusController, params string[] uriPrefixes) { this.constrainExecutionAsyncDelegate = constrainExecutionAsyncDelegate; this.collectionController = collectionController; this.statusController = statusController; lastRequestToUriPrefix = new Dictionary <string, DateTime>(); rateLimitRequestsCount = 0; this.uriPrefixes = uriPrefixes; if (this.uriPrefixes != null) { foreach (var prefix in this.uriPrefixes) { lastRequestToUriPrefix.Add( prefix, DateTime.UtcNow - TimeSpan.FromSeconds(requestIntervalSeconds)); } } }