private void RegisterServices(IServiceCollection services) { var commitmentsClientApiConfiguration = new CommitmentsClientApiConfiguration(); Configuration.GetSection(nameof(CommitmentsClientApiConfiguration)).Bind(commitmentsClientApiConfiguration); services.AddSingleton(commitmentsClientApiConfiguration); services.AddSingleton <ICommitmentsApiClientFactory, CommitmentsApiClientFactory>(); services.AddTransient(x => x.GetService <ICommitmentsApiClientFactory>().CreateClient()); services.AddTransient <CommitmentsService>(); var accountsApiConfiguration = new AccountApiConfiguration(); Configuration.GetSection(nameof(AccountApiConfiguration)).Bind(accountsApiConfiguration); services.AddSingleton <IAccountApiConfiguration>(accountsApiConfiguration); services.AddTransient <IAccountApiClient, AccountApiClient>(); services.AddTransient <EmployerService>(); var roatpApiConfiguration = new RoatpApiClientSettings(); Configuration.GetSection(nameof(RoatpApiClientSettings)).Bind(roatpApiConfiguration); services.AddSingleton(roatpApiConfiguration); services.AddSingleton <IRoatpApiHttpClientFactory, RoatpApiHttpClientFactory>(); services.AddTransient(x => x.GetService <IRoatpApiHttpClientFactory>().CreateClient()); services.AddTransient <IRoatpService, RoatpService>(); services.AddTransient <ProviderService>(); services.AddTransient <DataLockService>(); services.AddTransient <LearnerReportProvider>(); services.AddTransient <ITimeProvider, TimeProvider>(); }
private CommitmentsClientApiConfiguration GetCommitmentsClientApiConfiguration(IFunctionsHostBuilder builder, ServiceProvider serviceProvider, IConfigurationRoot config, string environment) { CommitmentsClientApiConfiguration commitmentsClientApiConfig; if (ConfigurationIsLocalOrDev(environment)) { commitmentsClientApiConfig = new CommitmentsClientApiConfiguration { ApiBaseUrl = config["CommitmentsV2ApiBaseUrl"], IdentifierUri = config["CommitmentsV2ApiIdentifierUri"], ClientId = config["CommitmentsV2ApiClientId"], ClientSecret = config["CommitmentsV2ApiClientSecret"], Tenant = config["CommitmentsV2ApiTenant"] }; } else { var section = config.GetSection("CommitmentsV2Api"); commitmentsClientApiConfig = section.Get <CommitmentsClientApiConfiguration>(); builder.Services.Configure <CommitmentsClientApiConfiguration>(section); builder.Services.AddSingleton(cfg => commitmentsClientApiConfig); } return(commitmentsClientApiConfig); }
public LocalDevApiClientFactory(CommitmentsClientApiConfiguration configuration, ILoggerFactory loggerFactory) { _configuration = configuration; _loggerFactory = loggerFactory; }
public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddLogging(logBuilder => { logBuilder.AddFilter(typeof(Startup).Namespace, LogLevel.Information); // this is because all logging is filtered out by default var rootDirectory = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..")); logBuilder.AddNLog(Directory.GetFiles(rootDirectory, "nlog.config", SearchOption.AllDirectories)[0]); }); var serviceProvider = builder.Services.BuildServiceProvider(); var configuration = serviceProvider.GetService <IConfiguration>(); var environment = configuration["EnvironmentName"]; var configBuilder = new ConfigurationBuilder() .AddConfiguration(configuration) .SetBasePath(Directory.GetCurrentDirectory()) .AddEnvironmentVariables(); if (!ConfigurationIsLocalOrDev(environment)) { configBuilder.AddAzureTableStorage(options => { options.ConfigurationKeys = configuration["ConfigNames"].Split(","); options.StorageConnectionString = configuration["ConfigurationStorageConnectionString"]; options.EnvironmentName = configuration["EnvironmentName"]; options.PreFixConfigurationKeys = false; }); } var config = configBuilder.Build(); var logger = serviceProvider.GetService <ILoggerProvider>().CreateLogger(GetType().AssemblyQualifiedName); if (!ConfigurationIsLocalOrDev(environment)) { builder.Services.AddNServiceBus(logger); } else { builder.Services.AddNServiceBus( logger, (options) => { if (config["NServiceBusConnectionString"] == "UseLearningEndpoint=true") { options.EndpointConfiguration = (endpoint) => { endpoint.UseTransport <LearningTransport>() .StorageDirectory(config["NServiceBusStorageDirectory"]); return(endpoint); }; } }); } ConfigureLogFactoy(); CommitmentsClientApiConfiguration commitmentsClientApiConfig = GetCommitmentsClientApiConfiguration(builder, serviceProvider, config, environment); builder.Services.AddSingleton <ICommitmentsApiClientFactory>(x => new CommitmentsApiClientFactory(commitmentsClientApiConfig, _loggerFactory)); builder.Services.AddTransient <ICommitmentsApiClient>(provider => provider.GetRequiredService <ICommitmentsApiClientFactory>().CreateClient()); var mapperConfig = new MapperConfiguration(config => { config.AddProfile <AutoMapperProfile>(); }); IMapper mapper = mapperConfig.CreateMapper(); builder.Services.AddSingleton(mapper); builder.Services.AddScoped <IApprenticeshipCompletedEventHandler, ApprenticeshipCompletedEventHandler>(); builder.Services.AddScoped <IApprenticeshipStoppedEventHandler, ApprenticeshipStoppedEventHandler>(); builder.Services.AddScoped <IApprenticeshipStopDateChangedEventHandler, ApprenticeshipStopDateChangedEventHandler>(); builder.Services.AddScoped <IApprenticeshipCompletionDateUpdatedEventHandler, ApprenticeshipCompletionDateUpdatedEventHandler>(); builder.Services.AddScoped(_ => CreateDocumentSession(config)); builder.Services.AddScoped <IGetApprenticeshipService, GetApprenticeshipService>(); builder.Services.AddSingleton <IConfiguration>(config); builder.Services.AddDatabaseRegistration(config, environment); }