internal RequestBuilder( ITimeProvider timeProvider, IEntityMapper entityMapper, IDbMultiEntityMethods dbContextService, IObcConfigurationProvider configurationProvider, IInstrumentationClient logger, IKeySecretReadOnlyProvider keySecretReadOnlyProvider, IApiClient apiClient, ICertificateReader certificateReader, IDbEntityRepository <BankClientProfile> clientProfileRepository, IDbEntityRepository <DomesticConsent> domesticConsentRepo, IDbEntityRepository <ApiProfile> apiProfileRepository, IKeySecretReadRepository <ActiveSoftwareStatementProfiles> activeSReadOnlyRepo, IKeySecretWriteRepository <ActiveSoftwareStatementProfiles> activeSrRepo, IKeySecretMultiItemReadRepository <SoftwareStatementProfile> sReadOnlyRepo, IKeySecretMultiItemWriteRepository <SoftwareStatementProfile> sRepo, ISoftwareStatementProfileService softwareStatementProfileService) { _certificateReader = certificateReader.ArgNotNull(nameof(certificateReader)); _timeProvider = timeProvider.ArgNotNull(nameof(timeProvider)); _entityMapper = entityMapper.ArgNotNull(nameof(entityMapper)); _dbContextService = dbContextService; _activeSReadOnlyRepo = activeSReadOnlyRepo; _activeSRRepo = activeSrRepo; _sReadOnlyRepo = sReadOnlyRepo; _sRepo = sRepo; _softwareStatementProfileService = softwareStatementProfileService; _configurationProvider = configurationProvider.ArgNotNull(nameof(configurationProvider)); _logger = logger.ArgNotNull(nameof(logger)); _keySecretReadOnlyProvider = keySecretReadOnlyProvider.ArgNotNull(nameof(keySecretReadOnlyProvider)); _apiClient = apiClient.ArgNotNull(nameof(apiClient)); _clientProfileRepository = clientProfileRepository.ArgNotNull(nameof(clientProfileRepository)); _domesticConsentRepo = domesticConsentRepo.ArgNotNull(nameof(domesticConsentRepo)); _apiProfileRepository = apiProfileRepository.ArgNotNull(nameof(apiProfileRepository)); }
internal SharedContext( ICertificateReader certificateReader, IApiClient apiClient, IObcConfigurationProvider configurationProvider, IInstrumentationClient instrumentation, IKeySecretReadOnlyProvider keySecretReadOnlyProvider, IDbEntityRepository <BankClientProfile> clientProfileRepository, ISoftwareStatementProfileService softwareStatementProfileService, IDbEntityRepository <DomesticConsent> domesticConsentRepository, IEntityMapper entityMapper, IDbEntityRepository <ApiProfile> apiProfileRepository, IDbMultiEntityMethods dbContextService, IKeySecretWriteRepository <ActiveSoftwareStatementProfiles> activeSrRepo, IKeySecretMultiItemReadRepository <SoftwareStatementProfile> sReadOnlyRepo, IKeySecretMultiItemWriteRepository <SoftwareStatementProfile> sRepo, IKeySecretReadRepository <ActiveSoftwareStatementProfiles> activeSReadOnlyRepo) { CertificateReader = certificateReader; ApiClient = apiClient; ConfigurationProvider = configurationProvider; Instrumentation = instrumentation; KeySecretReadOnlyProvider = keySecretReadOnlyProvider; ClientProfileRepository = clientProfileRepository; SoftwareStatementProfileService = softwareStatementProfileService; DomesticConsentRepository = domesticConsentRepository; EntityMapper = entityMapper; ApiProfileRepository = apiProfileRepository; DbContextService = dbContextService; ActiveSRRepo = activeSrRepo; SReadOnlyRepo = sReadOnlyRepo; SRepo = sRepo; ActiveSReadOnlyRepo = activeSReadOnlyRepo; }
public RequestBuilder( IEntityMapper entityMapper, IDbMultiEntityMethods dbContextService, IObcConfigurationProvider configurationProvider, IInstrumentationClient logger, IKeySecretReadOnlyProvider keySecretReadOnlyProvider, IApiClient apiClient, ICertificateReader certificateReader, IDbEntityRepository <BankClientProfile> clientProfileRepository, IDbEntityRepository <DomesticConsent> domesticConsentRepo, IDbEntityRepository <ApiProfile> apiProfileRepository, IKeySecretReadRepository <ActiveSoftwareStatementProfiles> activeSReadOnlyRepo, IKeySecretWriteRepository <ActiveSoftwareStatementProfiles> activeSrRepo, IKeySecretMultiItemReadRepository <SoftwareStatementProfile> sReadOnlyRepo, IKeySecretMultiItemWriteRepository <SoftwareStatementProfile> sRepo, ISoftwareStatementProfileService softwareStatementProfileService) : this( timeProvider : new TimeProvider(), entityMapper : entityMapper, dbContextService : dbContextService, configurationProvider : configurationProvider, logger : logger, keySecretReadOnlyProvider : keySecretReadOnlyProvider, apiClient : apiClient, certificateReader : certificateReader, clientProfileRepository : clientProfileRepository, domesticConsentRepo : domesticConsentRepo, apiProfileRepository : apiProfileRepository, activeSReadOnlyRepo : activeSReadOnlyRepo, activeSrRepo : activeSrRepo, sReadOnlyRepo : sReadOnlyRepo, sRepo : sRepo, softwareStatementProfileService : softwareStatementProfileService) { }
public CreateBankClientProfile( IApiClient apiClient, IEntityMapper mapper, IDbMultiEntityMethods dbMultiEntityMethods, IDbEntityRepository <BankClientProfile> bankClientProfileRepo, ISoftwareStatementProfileService softwareStatementProfileService) { _apiClient = apiClient; _mapper = mapper; _dbMultiEntityMethods = dbMultiEntityMethods; _bankClientProfileRepo = bankClientProfileRepo; _softwareStatementProfileService = softwareStatementProfileService; }
public CreateDomesticPayment( IApiClient apiClient, IEntityMapper mapper, IDbEntityRepository <BankClientProfile> openBankingClientRepo, IDbEntityRepository <DomesticConsent> domesticConsentRepo, IDbEntityRepository <ApiProfile> apiProfileRepo, ISoftwareStatementProfileService softwareStatementProfileService) { _apiClient = apiClient; _mapper = mapper; _openBankingClientRepo = openBankingClientRepo; _domesticConsentRepo = domesticConsentRepo; _apiProfileRepo = apiProfileRepo; _softwareStatementProfileService = softwareStatementProfileService; }
public CreateDomesticPaymentConsent( IApiClient apiClient, IEntityMapper mapper, IDbMultiEntityMethods dbMultiEntityMethods, IDbEntityRepository <BankClientProfile> bankClientProfileRepo, IDbEntityRepository <ApiProfile> apiProfileRepo, IDbEntityRepository <DomesticConsent> domesticConsentRepo, ISoftwareStatementProfileService softwareStatementProfileService) { _apiClient = apiClient; _mapper = mapper; _dbMultiEntityMethods = dbMultiEntityMethods; _bankClientProfileRepo = bankClientProfileRepo; _apiProfileRepo = apiProfileRepo; _domesticConsentRepo = domesticConsentRepo; _softwareStatementProfileService = softwareStatementProfileService; }
public RedirectCallbackHandler( IApiClient apiClient, IEntityMapper mapper, IDbEntityRepository <BankClientProfile> openBankingClientRepo, IDbEntityRepository <DomesticConsent> domesticConsentRepo, ISoftwareStatementProfileService softwareStatementProfileService, IDbMultiEntityMethods dbMultiEntityMethods, IDbEntityRepository <ApiProfile> apiProfileRepo) { _apiClient = apiClient.ArgNotNull(nameof(apiClient)); _mapper = mapper.ArgNotNull(nameof(mapper)); _openBankingClientRepo = openBankingClientRepo.ArgNotNull(nameof(openBankingClientRepo)); _domesticConsentRepo = domesticConsentRepo.ArgNotNull(nameof(domesticConsentRepo)); _softwareStatementProfileService = softwareStatementProfileService; _dbContextService = dbMultiEntityMethods; _apiProfileRepo = apiProfileRepo; }
public SoftwareStatementProfileHostedService(ISoftwareStatementProfileService softwareStatementProfileService) { _softwareStatementProfileService = softwareStatementProfileService ?? throw new ArgumentNullException(nameof(softwareStatementProfileService)); }
public static IServiceCollection AddOpenBankingConnector( this IServiceCollection services, IConfiguration configuration, bool loadSecretsFromConfig) { const string httpClientName = "OBC"; services.AddHttpClient(httpClientName) .ConfigurePrimaryHttpMessageHandler( sp => { ISoftwareStatementProfileService profileService = sp.GetRequiredService <ISoftwareStatementProfileService>(); // This can be removed in .NET 5 when SoftwareStatementProfileHostedService // and SocketsHttpHandler used. profileService.SetSoftwareStatementProfileFromSecretsSync(); HttpMessageHandler handler = new HttpRequestBuilder() .SetClientCertificates(profileService.GetCertificates()) .CreateMessageHandler(); return(handler); }); services.AddSingleton <IObcConfigurationProvider>( sp => new NetGenericHostObcConfigurationProvider(configuration)); services.AddSingleton <IInstrumentationClient, LoggerInstrumentationClient>(); if (loadSecretsFromConfig) { services.AddSingleton( sp => { IObcConfigurationProvider configProvider = sp.GetService <IObcConfigurationProvider>(); KeySecretBuilder builder = new KeySecretBuilder(); return(builder.GetKeySecretProvider( config: configuration, obcConfig: configProvider.GetObcConfiguration())); }); } else { services.AddSingleton <IKeySecretProvider, MemoryKeySecretProvider>(); } services.AddSingleton(x => (IKeySecretReadOnlyProvider)x.GetRequiredService <IKeySecretProvider>()); services.AddSingleton <IApiClient>( sp => { IHttpClientFactory hcf = sp.GetService <IHttpClientFactory>(); HttpClient client = hcf.CreateClient(httpClientName); return(new ApiClient(instrumentation: sp.GetService <IInstrumentationClient>(), httpClient: client)); }); services.AddSingleton <ICertificateReader, PemParsingCertificateReader>(); services.AddSingleton <IEntityMapper, EntityMapper>(); // Configure DB switch (configuration["DbProvider"]) { case "Sqlite": services // See e.g. https://jasonwatmore.com/post/2020/01/03/aspnet-core-ef-core-migrations-for-multiple-databases-sqlite-and-sql-server .AddDbContext <BaseDbContext, SqliteDbContext>( options => { string connectionString = configuration.GetConnectionString("SqliteDbContext"); options.UseSqlite(connectionString); }); break; default: throw new ArgumentException(message: "Unknown DB provider", paramName: configuration["DbProvider"]); } services.AddScoped <IDbMultiEntityMethods, DbMultiEntityMethods>(); services.AddScoped <IDbEntityRepository <BankClientProfile>, DbEntityRepository <BankClientProfile> >(); services.AddScoped <IDbEntityRepository <ApiProfile>, DbEntityRepository <ApiProfile> >(); services.AddScoped <IDbEntityRepository <DomesticConsent>, DbEntityRepository <DomesticConsent> >(); services.AddSingleton <IKeySecretReadRepository <ActiveSoftwareStatementProfiles>, KeySecretReadRepository <ActiveSoftwareStatementProfiles> >(); services.AddSingleton <IKeySecretWriteRepository <ActiveSoftwareStatementProfiles>, KeySecretWriteRepository <ActiveSoftwareStatementProfiles> >(); services.AddSingleton <IKeySecretMultiItemWriteRepository <SoftwareStatementProfile>, KeySecretMultiItemWriteRepository <SoftwareStatementProfile> >(); services.AddSingleton <IKeySecretMultiItemReadRepository <SoftwareStatementProfile>, KeySecretMultiItemReadRepository <SoftwareStatementProfile> >(); services.AddSingleton <ISoftwareStatementProfileService, SoftwareStatementProfileService>(); services.AddScoped <IOpenBankingRequestBuilder, RequestBuilder>(); // Startup tasks services.AddHostedService <StartupTasksHostedService>(); // This can be enabled in .NET 5 when SoftwareStatementProfileHostedService // and SocketsHttpHandler used. // services.AddHostedService<SoftwareStatementProfileHostedService>(); return(services); }
public CreateSoftwareStatementProfile(ISoftwareStatementProfileService softwareStatementProfileService) { _softwareStatementProfileService = softwareStatementProfileService; }