Beispiel #1
0
        public void CreateClientUsesLoggerToCreateLoggingHandler()
        {
            using StandaloneHttpClientFactory httpClientFactory = new StandaloneHttpClientFactory(NullLogger.Instance);
            using HttpClient client = httpClientFactory.CreateClient();
            HttpMessageHandler handler = GetHandler(client);

            Assert.IsType <LoggingHttpMessageHandler>(GetHandler(client));
            LoggingHttpMessageHandler loggingHandler = (LoggingHttpMessageHandler)handler;

            Assert.IsType <SocketsHttpHandler>(loggingHandler.InnerHandler);
        }
        static void Main(string[] args)
        {
            var messageHandler = new LoggingHttpMessageHandler(new Log4NetAdapter(typeof(System.Net.Http.HttpClient).FullName))
            {
                EnableContentLogging = true
            };

            using (var httpClient = new System.Net.Http.HttpClient(messageHandler))
            {
                // omitted for brevity
            }
        }
        public void CreateClientUsesLoggerToCreateLoggingHandler()
        {
            using (StandaloneHttpClientFactory httpClientFactory = new StandaloneHttpClientFactory(NullLogger.Instance))
            {
                using (HttpClient client = httpClientFactory.CreateClient())
                {
                    HttpMessageHandler handler = GetHandler(client);

                    Assert.IsType <LoggingHttpMessageHandler>(handler);
                    LoggingHttpMessageHandler loggingHandler = (LoggingHttpMessageHandler)handler;
                    Assert.IsType <ServicePointHttpMessageHandler>(loggingHandler.InnerHandler);
                }
            }
        }
Beispiel #4
0
 protected override void SetupServiceManager(IServiceManager serviceManager)
 {
     serviceManager.RegisterDebugLoggerFactory();
     serviceManager.RegisterResolver(
         new HttpClientResolver()
         .WithHttpMessageHandlerFactory((serviceProvider, categoryType) =>
     {
         var loggerType = typeof(ILogger <>).MakeGenericType(categoryType);
         var logger     = serviceProvider.GetService(loggerType).As <ILogger>();
         var handler    = new LoggingHttpMessageHandler(logger)
         {
             InnerHandler = new HttpClientHandler()
         };
         return(handler);
     }));
     serviceManager.RegisterOptionsManager();
 }
        public static void RegisterResolvers(IServiceManager serviceManager)
        {
            serviceManager.ThrowIfNull(nameof(serviceManager));

            serviceManager.RegisterResolver(
                new HttpClientResolver()
                .WithHttpMessageHandlerFactory((serviceProvider, categoryType) =>
            {
                var loggerType = typeof(ILogger <>).MakeGenericType(categoryType);
                var logger     = serviceProvider.GetService(loggerType).As <ILogger>();
                var handler    = new LoggingHttpMessageHandler(logger)
                {
                    InnerHandler = new HttpClientHandler()
                };
                return(handler);
            }));
            serviceManager.RegisterOptionsManager <ApplicationConfigurationOptionsManager>();
        }
        private static IServiceProvider ConfigureServices()
        {
            var configuration = BuildConfiguration();

            var services = new ServiceCollection();

            services.AddSingleton(configuration);

            services.AddHttpClient("k8s");

            services.AddLogging(configure => configure.AddConsole())
            .Configure <LoggerFilterOptions>(configure => configure.MinLevel = LogLevel.Debug);

            services.AddMetrics(builder => {
                new MetricsReporterBuilder().Chain(builder.Report, configuration.GetSection("Metrics:Reporting"));
            });

            services.AddScoped <IKubernetes, Kubernetes>(provider => {
                var factory        = provider.GetRequiredService <ILoggerFactory>();
                var logger         = factory.CreateLogger <HttpClient>();
                var loggingHandler = new LoggingHttpMessageHandler(logger);
                var config         = KubernetesClientConfiguration.IsInCluster() ? KubernetesClientConfiguration.InClusterConfig() : KubernetesClientConfiguration.BuildDefaultConfig();
                return(new Kubernetes(config, loggingHandler));
            });

            services.AddScoped <IKubernetesService, KubernetesService>();
            services.AddScoped <ISqlManagementService, SqlManagementService>();
            services.AddScoped <SecretSourceRehydrator>();
            services.AddScoped <DatabaseServerRehydrator>();
            services.AddOperator <DatabaseResource, DatabaseOperator>();
            services.AddOperator <DatabaseServerResource, DatabaseServerOperator>();
            services.AddOperator <DeploymentScriptResource, DeploymentScriptOperator>();
            services.AddOperator <CredentialsResource, CredentialsOperator>();

            return(services.BuildServiceProvider());
        }
Beispiel #7
0
        private HttpClient CreateHttpClient()
        {
            var httpClientHandler = new HttpClientHandler();
            HttpMessageHandler httpMessageHandler = httpClientHandler;

            if (_httpOptions != null)
            {
                if (_httpOptions.Proxy != null)
                {
                    httpClientHandler.Proxy = _httpOptions.Proxy;
                }
                if (_httpOptions.Cookies != null)
                {
                    httpClientHandler.CookieContainer = _httpOptions.Cookies;
                }
                if (_httpOptions.ClientCertificates != null)
                {
                    httpClientHandler.ClientCertificates.AddRange(_httpOptions.ClientCertificates);
                }
                if (_httpOptions.UseDefaultCredentials != null)
                {
                    httpClientHandler.UseDefaultCredentials = _httpOptions.UseDefaultCredentials.Value;
                }
                if (_httpOptions.Credentials != null)
                {
                    httpClientHandler.Credentials = _httpOptions.Credentials;
                }

                httpMessageHandler = httpClientHandler;
                if (_httpOptions.HttpMessageHandler != null)
                {
                    httpMessageHandler = _httpOptions.HttpMessageHandler(httpClientHandler);
                    if (httpMessageHandler == null)
                    {
                        throw new InvalidOperationException("Configured HttpMessageHandler did not return a value.");
                    }
                }
            }

            // Wrap message handler in a logging handler last to ensure it is always present
            httpMessageHandler = new LoggingHttpMessageHandler(httpMessageHandler, _loggerFactory);

            var httpClient = new HttpClient(httpMessageHandler);

            httpClient.Timeout = HttpClientTimeout;

            // Start with the user agent header
            httpClient.DefaultRequestHeaders.UserAgent.Add(Constants.UserAgentHeader);

            if (_httpOptions != null)
            {
                // Apply any headers configured on the HttpOptions
                if (_httpOptions.Headers != null)
                {
                    foreach (var header in _httpOptions.Headers)
                    {
                        httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
                    }
                }

                // Apply the authorization header
                if (_httpOptions.AccessTokenFactory != null)
                {
                    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_httpOptions.AccessTokenFactory()}");
                }
            }

            return(httpClient);
        }
        private HttpClient CreateHttpClient()
        {
            var httpClientHandler = new HttpClientHandler();
            HttpMessageHandler httpMessageHandler = httpClientHandler;

            if (_httpOptions != null)
            {
                if (_httpOptions.Proxy != null)
                {
                    httpClientHandler.Proxy = _httpOptions.Proxy;
                }
                if (_httpOptions.Cookies != null)
                {
                    httpClientHandler.CookieContainer = _httpOptions.Cookies;
                }
                if (_httpOptions.ClientCertificates != null)
                {
                    httpClientHandler.ClientCertificates.AddRange(_httpOptions.ClientCertificates);
                }
                if (_httpOptions.UseDefaultCredentials != null)
                {
                    httpClientHandler.UseDefaultCredentials = _httpOptions.UseDefaultCredentials.Value;
                }
                if (_httpOptions.Credentials != null)
                {
                    httpClientHandler.Credentials = _httpOptions.Credentials;
                }

                httpMessageHandler = httpClientHandler;
                if (_httpOptions.HttpMessageHandlerFactory != null)
                {
                    httpMessageHandler = _httpOptions.HttpMessageHandlerFactory(httpClientHandler);
                    if (httpMessageHandler == null)
                    {
                        throw new InvalidOperationException("Configured HttpMessageHandlerFactory did not return a value.");
                    }
                }

                // Apply the authorization header in a handler instead of a default header because it can change with each request
                if (_httpOptions.AccessTokenFactory != null)
                {
                    httpMessageHandler = new AccessTokenHttpMessageHandler(httpMessageHandler, _httpOptions.AccessTokenFactory);
                }
            }

            // Wrap message handler after HttpMessageHandlerFactory to ensure not overriden
            httpMessageHandler = new LoggingHttpMessageHandler(httpMessageHandler, _loggerFactory);

            var httpClient = new HttpClient(httpMessageHandler);

            httpClient.Timeout = HttpClientTimeout;

            // Start with the user agent header
            httpClient.DefaultRequestHeaders.UserAgent.Add(Constants.UserAgentHeader);

            // Apply any headers configured on the HttpOptions
            if (_httpOptions?.Headers != null)
            {
                foreach (var header in _httpOptions.Headers)
                {
                    httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
                }
            }

            httpClient.DefaultRequestHeaders.Remove("X-Requested-With");
            // Tell auth middleware to 401 instead of redirecting
            httpClient.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");

            return(httpClient);
        }