Esempio n. 1
0
 public FindACourseClient(HttpClient httpClient, CourseSearchClientSettings courseSearchClientSettings, IAuditService auditService, ILogger <IFindACourseClient> logger = null)
 {
     correlationId     = Guid.NewGuid();
     this.logger       = logger;
     this.auditService = auditService;
     this.courseSearchClientSettings = courseSearchClientSettings;
     this.httpClient = httpClient;
 }
        private static void AddCoreServices(IServiceCollection services, CourseSearchClientSettings courseSearchClientSettings)
        {
            services.AddSingleton(courseSearchClientSettings);

            if (courseSearchClientSettings?.CourseSearchAuditCosmosDbSettings?.DatabaseId != null)
            {
                services.AddScoped <ICosmosRepository <ApiAuditRecordCourse>, CosmosRepository <ApiAuditRecordCourse> >(s =>
                {
                    var cosmosDbAuditConnection  = courseSearchClientSettings.CourseSearchAuditCosmosDbSettings;
                    var documentClient           = new DocumentClient(cosmosDbAuditConnection.EndpointUrl, cosmosDbAuditConnection.AccessKey);
                    var isDevelopmentEnvironment = courseSearchClientSettings.CourseSearchAuditCosmosDbSettings.Environment?.ToLowerInvariant().Contains(Constants.LocalEnvironment);
                    var repository = new CosmosRepository <ApiAuditRecordCourse>(cosmosDbAuditConnection, documentClient);
                    repository.InitialiseDatabaseAsync(isDevelopmentEnvironment.GetValueOrDefault()).GetAwaiter().GetResult();
                    return(repository);
                });
            }

            services.AddScoped <IFindACourseClient, FindACourseClient>();
            services.AddScoped <IAuditService, AuditService>();
        }
        public static IServiceCollection AddFindACourseTransientFaultHandlingPolicies(this IServiceCollection services, CourseSearchClientSettings courseSearchClientSettings, IPolicyRegistry <string> policyRegistry = null)
        {
            var policyOptions = courseSearchClientSettings?.PolicyOptions;

            if (policyRegistry == null)
            {
                policyRegistry = services.AddPolicyRegistry();
            }

            services.AddPolicies(policyRegistry, nameof(CourseSearchClientSettings), policyOptions)
            .AddHttpClient <IFindACourseClient, FindACourseClient>(courseSearchClientSettings?.CourseSearchSvcSettings, nameof(CourseSearchClientSettings), nameof(PolicyOptions.HttpRetry), nameof(PolicyOptions.HttpCircuitBreaker));

            return(services);
        }
 public static IServiceCollection AddFindACourseServicesWithoutFaultHandling(this IServiceCollection services, CourseSearchClientSettings courseSearchClientSettings)
 {
     AddCoreServices(services, courseSearchClientSettings);
     return(services);
 }