/// <summary> /// Logs all response headers added in EncompassHttpResponseHeaderLoggerOptions from HttpClientOptions /// </summary> public EncompassHttpClientBuilder AddEncompassHttpResponseHeaderLoggingHandler() { var headers = _options.EncompassHttpResponseHeaderLoggerOptions; if (headers == null) { headers = new EncompassHttpResponseHeaderLoggerOptions(); } headers.AddRange("X-Concurrency-Limit-Limit", "X-Concurrency-Limit-Remaining", "X-Rate-Limit-Limit", "X-Rate-Limit-Remaining", "X-Rate-Limit-Reset"); if (headers.Count() > 0) { _builder.AddHttpMessageHandler(sp => new EncompassResponseHeadersLoggingHandler <EncompassHttpClientBuilder>( sp.GetService <ILogger <EncompassHttpClientBuilder> >(), headers)); } return(this); }
private void AddClientWithFairwayTokenHandlerandInterceptor(IFunctionsHostBuilder builder) { var fairwayTokenClientOptions = ConfigHelper.GetFairwayTokenClientOptions(); var encompassClientOptions = ConfigHelper.GetEncompassClientOptions(); var clientParameters = new ClientParameters { ApiClientId = fairwayTokenClientOptions.ClientId, ApiClientSecret = fairwayTokenClientOptions.ClientSecret }; clientParameters.CustomFieldsCacheInitialization = EncompassApi.CacheInitialization.Never; var headers = new EncompassHttpResponseHeaderLoggerOptions(); headers.AddRange("X-Concurrency-Limit-Limit", "X-Concurrency-Limit-Remaining", "X-Rate-Limit-Limit", "X-Rate-Limit-Remaining", "X-Rate-Limit-Reset"); var fairwayIOptions = Options.Create(fairwayTokenClientOptions); builder.Services.AddSingleton(clientParameters); builder.Services.AddSingleton(fairwayIOptions); builder.Services.AddFairwayTokenHandler(fairwayTokenClientOptions) .AddPolicyHandler(HttpPolicyExtensions.HandleTransientHttpError().RetryAsync(fairwayTokenClientOptions.RetryCount)) .AddPolicyHandler(Policy.TimeoutAsync <HttpResponseMessage>(fairwayTokenClientOptions.TimeoutInSeconds)); builder.Services.AddEncompassHttpClient(options => { options.CompressionOptions = new HttpClientCompressionHandlerOptions() { DecompressionMethods = new DecompressionMethods[] { DecompressionMethods.GZip }, EnableAutoDecompression = true }; options.ClientParameters = clientParameters; options.EncompassHttpResponseHeaderLoggerOptions = headers; options.EncompassClientOptions = encompassClientOptions; }, config => config.BaseAddress = new Uri(encompassClientOptions.BaseUrl)) .AddEncompassTokenMessageHandler() .AddEncompassHttpResponseHeaderLoggingHandler() .AddEncompassMessageHandler(sp => new AuthHeaderInterceptorHandler(sp.GetService <ILogger <AuthHeaderInterceptorHandler> >())) .AddEncompassRetryPolicyHandler() .AddEncompassTimeoutPolicyHandler() .Build(builder.Services); }