/// <summary>
        /// Set logging options for the request.
        /// </summary>
        /// <param name="requestBuilder">Request builder instance.</param>
        /// <param name="configure">Action to configure logging options.</param>
        public static FluentHttpRequestBuilder WithLoggingOptions(this FluentHttpRequestBuilder requestBuilder, Action <LoggerHttpMiddlewareOptions> configure)
        {
            var options = new LoggerHttpMiddlewareOptions();

            configure?.Invoke(options);
            return(requestBuilder.WithLoggingOptions(options));
        }
        /// <summary>
        /// Use logger middleware which logs out going requests and incoming responses.
        /// </summary>
        /// <param name="builder">Builder instance</param>
        /// <param name="configure">Action to configure logging options.</param>
        public static FluentHttpClientBuilder UseLogging(this FluentHttpClientBuilder builder, Action <LoggerHttpMiddlewareOptions> configure)
        {
            var options = new LoggerHttpMiddlewareOptions();

            configure?.Invoke(options);
            return(builder.UseLogging(options));
        }
Exemple #3
0
        public void RequestSpecificOptions_ActionBased()
        {
            var loggerHttpMiddlewareOptions = new LoggerHttpMiddlewareOptions
            {
                ShouldLogDetailedRequest  = false,
                ShouldLogDetailedResponse = false
            };
            var httpClient = GetNewClientFactory().CreateBuilder("sketch7")
                             .WithBaseUrl("https://sketch7.com")
                             .UseLogging(loggerHttpMiddlewareOptions)
                             .Build();

            var request = httpClient.CreateRequest("/api/heroes")
                          .AsPost()
                          .WithLoggingOptions(x =>
            {
                x.ShouldLogDetailedResponse = true;
                x.ShouldLogDetailedRequest  = true;
            })
                          .Build();

            var options = request.GetLoggingOptions(loggerHttpMiddlewareOptions);

            Assert.True(options.ShouldLogDetailedRequest);
            Assert.True(options.ShouldLogDetailedResponse);
        }
Exemple #4
0
        public void DefaultLoggingOptions_ShouldBeMerged()
        {
            var fluentHttpClientFactory     = GetNewClientFactory();
            var loggerHttpMiddlewareOptions = new LoggerHttpMiddlewareOptions
            {
                ShouldLogDetailedRequest  = true,
                ShouldLogDetailedResponse = true
            };
            var clientBuilder = fluentHttpClientFactory.CreateBuilder("sketch7")
                                .WithBaseUrl("https://sketch7.com")
                                .UseLogging(loggerHttpMiddlewareOptions);

            var httpClient = fluentHttpClientFactory.Add(clientBuilder);
            var request    = httpClient.CreateRequest("/api/heroes")
                             .AsPost()
                             .Build();

            var options = request.GetLoggingOptions(loggerHttpMiddlewareOptions);

            Assert.True(options.ShouldLogDetailedRequest);
            Assert.True(options.ShouldLogDetailedResponse);
        }
 /// <summary>
 /// Use logger middleware which logs out going requests and incoming responses.
 /// </summary>
 /// <param name="builder">Builder instance</param>
 /// <param name="options"></param>
 public static FluentHttpClientBuilder UseLogging(this FluentHttpClientBuilder builder, LoggerHttpMiddlewareOptions options = null)
 => builder.UseMiddleware <LoggerHttpMiddleware>(options ?? new LoggerHttpMiddlewareOptions());
        /// <summary>
        /// Get logging option for the request.
        /// </summary>
        /// <param name="request">Request to get options from.</param>
        /// <param name="defaultOptions"></param>
        /// <returns>Returns merged logging options.</returns>
        public static LoggerHttpMiddlewareOptions GetLoggingOptions(this FluentHttpRequest request, LoggerHttpMiddlewareOptions defaultOptions = null)
        {
            if (!request.Items.TryGetValue(LoggingOptionsKey, out var result))
            {
                return(defaultOptions);
            }
            var options = (LoggerHttpMiddlewareOptions)result;

            if (defaultOptions == null)
            {
                return(options);
            }
            options.ShouldLogDetailedRequest  = options.ShouldLogDetailedRequest ?? defaultOptions.ShouldLogDetailedRequest;
            options.ShouldLogDetailedResponse = options.ShouldLogDetailedResponse ?? defaultOptions.ShouldLogDetailedResponse;
            return(options);
        }
 /// <summary>
 /// Set logging options for the request.
 /// </summary>
 /// <param name="requestBuilder">Request builder instance.</param>
 /// <param name="options">Logging options to set.</param>
 public static FluentHttpRequestBuilder WithLoggingOptions(this FluentHttpRequestBuilder requestBuilder, LoggerHttpMiddlewareOptions options)
 {
     requestBuilder.Items[LoggingOptionsKey] = options;
     return(requestBuilder);
 }