public LandmarkApiClient(HttpClient policyHttpClient, LandmarkApiConfig apiConfig, IAuditEventRepository auditEventRepository) { _policyHttpClient = policyHttpClient; _instanceConfiguration = apiConfig.DefaultInstance; _auditEventRepository = auditEventRepository; _serviceUri = new Uri(_instanceConfiguration.BaseUri, ServiceRestEndpointAddress); }
public LandmarkHttpPoliciesHolder(LandmarkApiConfig apiConfig, LandmarkHttpPolicyOptions httpPolicyOptions) { HttpFallbackPolicy = Policy.Handle <HttpRequestException>() .Or <TimeoutRejectedException>() .Or <BrokenCircuitException>() .OrResult(_handledHttpStatusCodes) .FallbackAsync(fallbackValue: null, onFallbackAsync: OnFallbackAsync); HttpCircuitBreakerPolicy = Policy.Handle <HttpRequestException>() .Or <TimeoutRejectedException>() .OrResult(_handledHttpStatusCodes) .CircuitBreakerAsync(1, httpPolicyOptions.CircuitBreakDuration, onBreak: (result, duration, context) => context["BlockedTill"] = DateTime.UtcNow.Add(duration), onReset: context => context.Remove("BlockedTill")); GetRetryPolicyAction = request => RetryPolicyBuilder(request, apiConfig, httpPolicyOptions.MaxAttemptsPerInstance); HttpTimeoutPolicy = Policy.TimeoutAsync <HttpResponseMessage>(httpPolicyOptions.TimeoutPerRequest); }