Пример #1
0
 public static IServiceCollection AddFairwayTokenHandlerWithRetry(this IServiceCollection services, FairwayTokenClientOptions fairwayTokenClientOptions) => AddClientWithFairwayTokenHandler(services, fairwayTokenClientOptions);
Пример #2
0
        public static IHttpClientBuilder AddFairwayTokenHandler(this IServiceCollection services, FairwayTokenClientOptions fairwayTokenClientOptions)
        {
            IOptions <FairwayTokenClientOptions> options = Options.Create(fairwayTokenClientOptions);

            services.AddSingleton(options);

            return(services.AddHttpClient <ITokenClient, FairwayTokenClient>());
        }
Пример #3
0
        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;
 }