コード例 #1
0
 public HandshakeProcessor(ILogger <HandshakeProcessor> logger,
                           IEventBus eventBus,
                           IDateTimeProvider dateTimeProvider,
                           IRandomNumberGenerator randomNumberGenerator,
                           NodeImplementation nodeImplementation,
                           IPeerBehaviorManager peerBehaviorManager,
                           IInitialBlockDownloadTracker initialBlockDownloadState,
                           IUserAgentBuilder userAgentBuilder,
                           ILocalServiceProvider localServiceProvider,
                           IHeadersTree headersTree,
                           SelfConnectionTracker selfConnectionTracker) : base(logger,
                                                                               eventBus,
                                                                               peerBehaviorManager,
                                                                               isHandshakeAware: true,
                                                                               // we are performing handshake so we want to receive messages before handshake status
                                                                               receiveMessagesOnlyIfHandshaked: false)
 {
     _dateTimeProvider          = dateTimeProvider;
     _randomNumberGenerator     = randomNumberGenerator;
     _nodeImplementation        = nodeImplementation;
     _initialBlockDownloadState = initialBlockDownloadState;
     _userAgentBuilder          = userAgentBuilder;
     _localServiceProvider      = localServiceProvider;
     _headersTree           = headersTree;
     _selfConnectionTracker = selfConnectionTracker;
     _status = new HandshakeProcessorStatus(this);
 }
コード例 #2
0
 public ManagedHttpDispatcher(IHttpProxySettingsProvider proxySettingsProvider, ICreateManagedWebProxy createManagedWebProxy, IUserAgentBuilder userAgentBuilder, IPlatformInfo platformInfo, Logger logger)
 {
     _proxySettingsProvider = proxySettingsProvider;
     _createManagedWebProxy = createManagedWebProxy;
     _userAgentBuilder      = userAgentBuilder;
     _platformInfo          = platformInfo;
     _logger = logger;
 }
コード例 #3
0
 public HandshakeProcessor(ILogger <HandshakeProcessor> logger,
                           IEventBus eventBus,
                           IDateTimeProvider dateTimeProvider,
                           IRandomNumberGenerator randomNumberGenerator,
                           IPeerBehaviorManager peerBehaviorManager,
                           IUserAgentBuilder userAgentBuilder
                           ) : base(logger, eventBus, peerBehaviorManager, isHandshakeAware: true)
 {
     _dateTimeProvider      = dateTimeProvider;
     _randomNumberGenerator = randomNumberGenerator;
     _userAgentBuilder      = userAgentBuilder;
 }
コード例 #4
0
        public ManagedHttpDispatcher(IHttpProxySettingsProvider proxySettingsProvider,
                                     ICreateManagedWebProxy createManagedWebProxy,
                                     ICertificateValidationService certificateValidationService,
                                     IUserAgentBuilder userAgentBuilder,
                                     ICacheManager cacheManager)
        {
            _proxySettingsProvider        = proxySettingsProvider;
            _createManagedWebProxy        = createManagedWebProxy;
            _certificateValidationService = certificateValidationService;
            _userAgentBuilder             = userAgentBuilder;

            _httpClientCache = cacheManager.GetCache <System.Net.Http.HttpClient>(typeof(ManagedHttpDispatcher));
        }
コード例 #5
0
        public HttpClient(IUserAgentBuilder userAgentBuilder, MachineId machineId)
        {
            ServicePointManager.DefaultConnectionLimit = 12;
            ServicePointManager.Expect100Continue      = true;
            ServicePointManager.SecurityProtocol      |= SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            _userAgentBuilder = userAgentBuilder;
            _machineId        = machineId;

            _handler = new HttpClientHandler
            {
                AllowAutoRedirect      = true,
                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
            };
        }
コード例 #6
0
ファイル: HttpClient.cs プロジェクト: yonkyunior/Sonarr
        public HttpClient(IEnumerable <IHttpRequestInterceptor> requestInterceptors,
                          ICacheManager cacheManager,
                          IRateLimitService rateLimitService,
                          IHttpDispatcher httpDispatcher,
                          IUserAgentBuilder userAgentBuilder,
                          Logger logger)
        {
            _requestInterceptors = requestInterceptors.ToList();
            _rateLimitService    = rateLimitService;
            _httpDispatcher      = httpDispatcher;
            _userAgentBuilder    = userAgentBuilder;
            _logger = logger;

            ServicePointManager.DefaultConnectionLimit = 12;
            _cookieContainerCache = cacheManager.GetCache <CookieContainer>(typeof(HttpClient));
        }
コード例 #7
0
        internal DefaultDataStore(IClient client, IRequestExecutor requestExecutor, string baseUrl, IJsonSerializer serializer, ILogger logger, IUserAgentBuilder userAgentBuilder, ICacheProvider cacheProvider, TimeSpan identityMapExpiration)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            if (requestExecutor == null)
            {
                throw new ArgumentNullException(nameof(requestExecutor));
            }

            if (string.IsNullOrEmpty(baseUrl))
            {
                throw new ArgumentNullException(nameof(baseUrl));
            }

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            if (cacheProvider == null)
            {
                throw new ArgumentNullException(nameof(cacheProvider), "Use NullCacheProvider if you wish to turn off caching.");
            }

            this.baseUrl          = baseUrl;
            this.logger           = logger;
            this.requestExecutor  = requestExecutor;
            this.cacheProvider    = cacheProvider;
            this.cacheResolver    = new DefaultCacheResolver(cacheProvider, this.logger);
            this.userAgentBuilder = userAgentBuilder;

            this.client            = client;
            this.serializer        = new JsonSerializationProvider(serializer);
            this.identityMap       = new MemoryCacheIdentityMap <ResourceData>(identityMapExpiration, this.logger);
            this.resourceFactory   = new DefaultResourceFactory(this, this.identityMap);
            this.resourceConverter = new DefaultResourceConverter();

            this.uriQualifier = new UriQualifier(baseUrl);

            this.defaultAsyncFilters = this.BuildDefaultAsyncFilterChain();
            this.defaultSyncFilters  = this.BuildDefaultSyncFilterChain();
        }
コード例 #8
0
        public DefaultClient(
            IClientApiKey apiKey,
            string baseUrl,
            AuthenticationScheme authenticationScheme,
            int connectionTimeout,
            IWebProxy proxy,
            IHttpClient httpClient,
            IJsonSerializer serializer,
            ICacheProvider cacheProvider,
            IUserAgentBuilder userAgentBuilder,
            ILogger logger,
            TimeSpan identityMapExpiration)
        {
            if (apiKey == null || !apiKey.IsValid())
            {
                throw new ArgumentException("API Key is not valid.");
            }

            if (string.IsNullOrEmpty(baseUrl))
            {
                throw new ArgumentNullException("Base URL cannot be empty.");
            }

            if (connectionTimeout < 0)
            {
                throw new ArgumentException("Timeout cannot be negative.");
            }

            this.logger = logger;
            this.apiKey = apiKey;
            this.baseUrl = baseUrl;
            this.connectionTimeout = connectionTimeout;
            this.proxy = proxy;
            this.cacheProvider = cacheProvider;
            this.authenticationScheme = authenticationScheme;
            this.serializer = serializer;
            this.httpClient = httpClient;

            var requestExecutor = new DefaultRequestExecutor(httpClient, apiKey, authenticationScheme, this.logger);

            this.dataStore = new DefaultDataStore(this as IClient, requestExecutor, baseUrl, this.serializer, this.logger, userAgentBuilder, cacheProvider, identityMapExpiration);
            this.dataStoreAsync = this.dataStore as IInternalAsyncDataStore;
            this.dataStoreSync = this.dataStore as IInternalSyncDataStore;
        }
コード例 #9
0
        public DefaultClient(
            IClientApiKey apiKey,
            string baseUrl,
            AuthenticationScheme authenticationScheme,
            int connectionTimeout,
            IWebProxy proxy,
            IHttpClient httpClient,
            IJsonSerializer serializer,
            ICacheProvider cacheProvider,
            IUserAgentBuilder userAgentBuilder,
            ILogger logger,
            TimeSpan identityMapExpiration)
        {
            if (apiKey == null || !apiKey.IsValid())
            {
                throw new ArgumentException("API Key is not valid.");
            }

            if (string.IsNullOrEmpty(baseUrl))
            {
                throw new ArgumentNullException("Base URL cannot be empty.");
            }

            if (connectionTimeout < 0)
            {
                throw new ArgumentException("Timeout cannot be negative.");
            }

            this.logger               = logger;
            this.apiKey               = apiKey;
            this.baseUrl              = baseUrl;
            this.connectionTimeout    = connectionTimeout;
            this.proxy                = proxy;
            this.cacheProvider        = cacheProvider;
            this.authenticationScheme = authenticationScheme;
            this.serializer           = serializer;
            this.httpClient           = httpClient;

            var requestExecutor = new DefaultRequestExecutor(httpClient, apiKey, authenticationScheme, this.logger);

            this.dataStore      = new DefaultDataStore(this as IClient, requestExecutor, baseUrl, this.serializer, this.logger, userAgentBuilder, cacheProvider, identityMapExpiration);
            this.dataStoreAsync = this.dataStore as IInternalAsyncDataStore;
            this.dataStoreSync  = this.dataStore as IInternalSyncDataStore;
        }
コード例 #10
0
 public HandshakeProcessor(ILogger <HandshakeProcessor> logger,
                           IEventBus eventBus,
                           IDateTimeProvider dateTimeProvider,
                           IRandomNumberGenerator randomNumberGenerator,
                           NodeImplementation nodeImplementation,
                           IPeerBehaviorManager peerBehaviorManager,
                           IUserAgentBuilder userAgentBuilder
                           ) : base(logger,
                                    eventBus,
                                    peerBehaviorManager,
                                    isHandshakeAware: true,
                                    // we are performing handshake so we want to receive messages before handshake status
                                    receiveMessagesOnlyIfHandshaked: false)
 {
     _dateTimeProvider      = dateTimeProvider;
     _randomNumberGenerator = randomNumberGenerator;
     _nodeImplementation    = nodeImplementation;
     _userAgentBuilder      = userAgentBuilder;
     _status = new HandshakeProcessorStatus(this);
 }
コード例 #11
0
 public ManagedHttpDispatcher(IHttpProxySettingsProvider proxySettingsProvider, ICreateManagedWebProxy createManagedWebProxy, IUserAgentBuilder userAgentBuilder)
 {
     _proxySettingsProvider = proxySettingsProvider;
     _createManagedWebProxy = createManagedWebProxy;
     _userAgentBuilder      = userAgentBuilder;
 }
コード例 #12
0
ファイル: CurlHttpDispatcher.cs プロジェクト: Gadarr/Gadarr
 public CurlHttpDispatcher(IHttpProxySettingsProvider proxySettingsProvider, IUserAgentBuilder userAgentBuilder, Logger logger)
 {
     _proxySettingsProvider = proxySettingsProvider;
     _userAgentBuilder      = userAgentBuilder;
     _logger = logger;
 }
コード例 #13
0
 internal DefaultClientBuilder(IClientApiKeyBuilder clientApiKeyBuilder, IUserAgentBuilder userAgentBuilder)
     : this(userAgentBuilder)
 {
     this.clientApiKeyBuilder = clientApiKeyBuilder;
 }
コード例 #14
0
 public DefaultClientBuilder(IUserAgentBuilder userAgentBuilder)
 {
     this.userAgentBuilder    = userAgentBuilder;
     this.clientApiKeyBuilder = ClientApiKeys.Builder();
 }