/// <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)); }
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); }
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); }