public static IServiceCollection AddFairwayTokenHandlerWithRetry(this IServiceCollection services, FairwayTokenClientOptions fairwayTokenClientOptions) => AddClientWithFairwayTokenHandler(services, fairwayTokenClientOptions);
public static IHttpClientBuilder AddFairwayTokenHandler(this IServiceCollection services, FairwayTokenClientOptions fairwayTokenClientOptions) { IOptions <FairwayTokenClientOptions> options = Options.Create(fairwayTokenClientOptions); services.AddSingleton(options); return(services.AddHttpClient <ITokenClient, FairwayTokenClient>()); }
public static IServiceCollection AddClientWithFairwayTokenHandler(this IServiceCollection services, FairwayTokenClientOptions fairwayTokenClientOptions) { var clientParameters = new ClientParameters { ApiClientId = fairwayTokenClientOptions.ClientId, ApiClientSecret = fairwayTokenClientOptions.ClientSecret }; clientParameters.CustomFieldsCacheInitialization = EncompassApi.CacheInitialization.Never; services.AddSingleton(clientParameters); IOptions <FairwayTokenClientOptions> tokenClientIOptions = Options.Create(fairwayTokenClientOptions); var retryPolicy = HttpPolicyExtensions.HandleTransientHttpError().RetryAsync(fairwayTokenClientOptions.RetryCount); var timeoutPolicy = Policy.TimeoutAsync <HttpResponseMessage>(fairwayTokenClientOptions.TimeoutInSeconds); services.AddSingleton(tokenClientIOptions); services.AddHttpClient <ITokenClient, FairwayTokenClient>() .AddPolicyHandler(retryPolicy) .AddPolicyHandler(timeoutPolicy); services.AddHttpClient <IEncompassApiClient, EncompassApiService>(c => { c.BaseAddress = new Uri(fairwayTokenClientOptions.BaseUrl); }) .AddHttpMessageHandler <TokenHandler>() .AddPolicyHandler(retryPolicy) .AddPolicyHandler(timeoutPolicy); services.AddTransient <IEncompassApiClient>(sp => new EncompassApiService(sp.GetService <IHttpClientFactory>().CreateClient("EncompassClient"), clientParameters)); return(services); }
public FairwayTokenClient(HttpClient httpClient, IOptions <FairwayTokenClientOptions> options) { _httpClient = httpClient; _options = options.Value; }