예제 #1
0
        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));
                }
            }
        }