public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddOptions <GraphCredentials>().Configure <IConfiguration>((settings, configuration) => { configuration.GetSection("graphCredentials").Bind(settings); }); builder.Services.AddOptions <ServiceBusConfiguration>().Configure <IConfiguration>((settings, configuration) => { settings.Namespace = configuration.GetValue <string>("differenceServiceBusNamespace"); settings.QueueName = configuration.GetValue <string>("membershipQueueName"); }); builder.Services.AddOptions <LogAnalyticsSecret <LoggingRepository> >().Configure <IConfiguration>((settings, configuration) => { settings.WorkSpaceId = configuration.GetValue <string>("logAnalyticsCustomerId"); settings.SharedKey = configuration.GetValue <string>("logAnalyticsPrimarySharedKey"); settings.Location = nameof(SecurityGroup); }); builder.Services.AddSingleton <IGraphServiceClient>((services) => { return(new GraphServiceClient(FunctionAppDI.CreateAuthProvider(services.GetService <IOptions <GraphCredentials> >().Value))); }) .AddSingleton <IMembershipServiceBusRepository, MembershipServiceBusRepository>((services) => { var config = services.GetService <IOptions <ServiceBusConfiguration> >().Value; return(new MembershipServiceBusRepository(serviceBusNamespacePrefix: config.Namespace, queueName: config.QueueName)); }) .AddSingleton <IGraphGroupRepository, GraphGroupRepository>() .AddSingleton <SGMembershipCalculator>() .AddSingleton <ILogAnalyticsSecret <LoggingRepository> >(services => services.GetService <IOptions <LogAnalyticsSecret <LoggingRepository> > >().Value) .AddSingleton <ILoggingRepository, LoggingRepository>(); }
public override void Configure(IFunctionsHostBuilder builder) { base.Configure(builder); builder.Services.AddOptions <GraphCredentials>().Configure <IConfiguration>((settings, configuration) => { configuration.GetSection("graphCredentials").Bind(settings); }); builder.Services.AddOptions <SyncJobRepoCredentials <SyncJobRepository> >().Configure <IConfiguration>((settings, configuration) => { settings.ConnectionString = configuration.GetValue <string>("jobsStorageAccountConnectionString"); settings.TableName = configuration.GetValue <string>("jobsTableName"); }); builder.Services.AddSingleton <IKeyVaultSecret <ISyncJobTopicService> >(services => new KeyVaultSecret <ISyncJobTopicService>(services.GetService <IOptions <GraphCredentials> >().Value.ClientId)) .AddSingleton <IGraphServiceClient>((services) => { return(new GraphServiceClient(FunctionAppDI.CreateAuthProvider(services.GetService <IOptions <GraphCredentials> >().Value))); }) .AddSingleton <IEmailSenderRecipient>(services => { var creds = services.GetService <IOptions <EmailSenderRecipient> >(); return(new EmailSenderRecipient(creds.Value.SenderAddress, creds.Value.SenderPassword, creds.Value.SyncCompletedCCAddresses, creds.Value.SyncDisabledCCAddresses)); }) .AddSingleton <IGraphGroupRepository, GraphGroupRepository>(); builder.Services.AddSingleton <ISyncJobRepository>(services => { var creds = services.GetService <IOptions <SyncJobRepoCredentials <SyncJobRepository> > >(); return(new SyncJobRepository(creds.Value.ConnectionString, creds.Value.TableName, services.GetService <ILoggingRepository>())); }); builder.Services.AddSingleton <IServiceBusTopicsRepository>(new ServiceBusTopicsRepository(GetValueOrThrow("serviceBusConnectionString"), GetValueOrThrow("serviceBusSyncJobTopic"))); builder.Services.AddSingleton <ISyncJobTopicService, SyncJobTopicsService>(); builder.Services.AddSingleton <ILogAnalyticsSecret <LoggingRepository> >(new LogAnalyticsSecret <LoggingRepository>(GetValueOrThrow("logAnalyticsCustomerId"), GetValueOrThrow("logAnalyticsPrimarySharedKey"), nameof(JobTrigger))); builder.Services.AddSingleton <ILoggingRepository, LoggingRepository>(); var graphCredentials = builder.Services.BuildServiceProvider().GetService <IOptions <GraphCredentials> >().Value; builder.Services.AddOptions <EmailSenderRecipient>().Configure <IConfiguration>((settings, configuration) => { settings.SenderAddress = configuration.GetValue <string>("senderAddress"); settings.SenderPassword = configuration.GetValue <string>("senderPassword"); settings.SyncDisabledCCAddresses = configuration.GetValue <string>("syncDisabledCCEmailAddresses"); }); builder.Services.AddSingleton <IMailRepository>(services => new MailRepository(new GraphServiceClient(FunctionAppDI.CreateMailAuthProvider(graphCredentials)), services.GetService <ILocalizationRepository>())); }
public override void Configure(IFunctionsHostBuilder builder) { base.Configure(builder); builder.Services.AddOptions <GraphCredentials>().Configure <IConfiguration>((settings, configuration) => { configuration.GetSection("graphCredentials").Bind(settings); }); builder.Services.AddSingleton <IKeyVaultSecret <ISyncJobTopicService> >(services => new KeyVaultSecret <ISyncJobTopicService>(services.GetService <IOptions <GraphCredentials> >().Value.ClientId)) .AddSingleton <IGraphServiceClient>((services) => { return(new GraphServiceClient(FunctionAppDI.CreateAuthProvider(services.GetService <IOptions <GraphCredentials> >().Value))); }) .AddSingleton <IGraphGroupRepository, GraphGroupRepository>(); builder.Services.AddSingleton <ISyncJobRepository>(new SyncJobRepository(GetValueOrThrow("jobsStorageAccountConnectionString"), GetValueOrThrow("jobsTableName"))); builder.Services.AddSingleton <IServiceBusTopicsRepository>(new ServiceBusTopicsRepository(GetValueOrThrow("serviceBusConnectionString"), GetValueOrThrow("serviceBusSyncJobTopic"))); builder.Services.AddSingleton <ISyncJobTopicService, SyncJobTopicsService>(); builder.Services.AddSingleton <ILogAnalyticsSecret <LoggingRepository> >(new LogAnalyticsSecret <LoggingRepository>(GetValueOrThrow("logAnalyticsCustomerId"), GetValueOrThrow("logAnalyticsPrimarySharedKey"), nameof(JobTrigger))); builder.Services.AddSingleton <ILoggingRepository, LoggingRepository>(); }
public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddOptions <GraphCredentials>().Configure <IConfiguration>((settings, configuration) => { configuration.GetSection("graphCredentials").Bind(settings); }); builder.Services.AddOptions <SyncJobRepoCredentials>().Configure <IConfiguration>((settings, configuration) => { settings.ConnectionString = configuration.GetValue <string>("jobsStorageAccountConnectionString"); settings.TableName = configuration.GetValue <string>("jobsTableName"); }); builder.Services.AddOptions <LogAnalyticsSecret <LoggingRepository> >().Configure <IConfiguration>((settings, configuration) => { settings.WorkSpaceId = configuration.GetValue <string>("logAnalyticsCustomerId"); settings.SharedKey = configuration.GetValue <string>("logAnalyticsPrimarySharedKey"); settings.Location = nameof(GraphUpdater); }); builder.Services.AddSingleton <IMembershipDifferenceCalculator <AzureADUser>, MembershipDifferenceCalculator <AzureADUser> >() .AddSingleton <IGraphServiceClient>((services) => { return(new GraphServiceClient(FunctionAppDI.CreateAuthProvider(services.GetService <IOptions <GraphCredentials> >().Value))); }) .AddScoped <IGraphGroupRepository, GraphGroupRepository>() .AddSingleton <ISyncJobRepository>(services => { var creds = services.GetService <IOptions <SyncJobRepoCredentials> >(); return(new SyncJobRepository(creds.Value.ConnectionString, creds.Value.TableName)); }) .AddSingleton <ILogAnalyticsSecret <LoggingRepository> >(services => services.GetService <IOptions <LogAnalyticsSecret <LoggingRepository> > >().Value) .AddScoped <SessionMessageCollector>() .AddScoped <ILoggingRepository, LoggingRepository>() .AddScoped <IGraphUpdater, GraphUpdaterApplication>(); }
public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddOptions <GraphCredentials>().Configure <IConfiguration>((settings, configuration) => { configuration.GetSection("graphCredentials").Bind(settings); }); builder.Services.AddOptions <SyncJobRepoCredentials <SyncJobRepository> >().Configure <IConfiguration>((settings, configuration) => { settings.ConnectionString = configuration.GetValue <string>("jobsStorageAccountConnectionString"); settings.TableName = configuration.GetValue <string>("jobsTableName"); }); builder.Services.AddOptions <LogAnalyticsSecret <LoggingRepository> >().Configure <IConfiguration>((settings, configuration) => { settings.WorkSpaceId = configuration.GetValue <string>("logAnalyticsCustomerId"); settings.SharedKey = configuration.GetValue <string>("logAnalyticsPrimarySharedKey"); settings.Location = nameof(GraphUpdater); }); builder.Services.AddSingleton <IMembershipDifferenceCalculator <AzureADUser>, MembershipDifferenceCalculator <AzureADUser> >() .AddSingleton <IGraphServiceClient>((services) => { return(new GraphServiceClient(FunctionAppDI.CreateAuthProvider(services.GetService <IOptions <GraphCredentials> >().Value))); }) .AddScoped <IGraphGroupRepository, GraphGroupRepository>() .AddSingleton <ISyncJobRepository>(services => { var creds = services.GetService <IOptions <SyncJobRepoCredentials <SyncJobRepository> > >(); return(new SyncJobRepository(creds.Value.ConnectionString, creds.Value.TableName, services.GetService <ILoggingRepository>())); }) .AddSingleton <IEmailSenderRecipient>(services => { var creds = services.GetService <IOptions <EmailSenderRecipient> >(); return(new EmailSenderRecipient(creds.Value.SenderAddress, creds.Value.SenderPassword, creds.Value.SyncCompletedCCAddresses, creds.Value.SyncDisabledCCAddresses)); }) .AddSingleton <ILogAnalyticsSecret <LoggingRepository> >(services => services.GetService <IOptions <LogAnalyticsSecret <LoggingRepository> > >().Value) .AddScoped <SessionMessageCollector>() .AddScoped <ILoggingRepository, LoggingRepository>() .AddScoped <IGraphUpdater, GraphUpdaterApplication>(); var graphCredentials = builder.Services.BuildServiceProvider().GetService <IOptions <GraphCredentials> >().Value; builder.Services.AddOptions <EmailSenderRecipient>().Configure <IConfiguration>((settings, configuration) => { settings.SenderAddress = configuration.GetValue <string>("senderAddress"); settings.SenderPassword = configuration.GetValue <string>("senderPassword"); settings.SyncCompletedCCAddresses = configuration.GetValue <string>("syncCompletedCCEmailAddresses"); settings.SyncDisabledCCAddresses = configuration.GetValue <string>("syncDisabledCCEmailAddresses"); }); builder.Services.AddSingleton <IMailRepository>(services => new MailRepository(new GraphServiceClient(FunctionAppDI.CreateMailAuthProvider(graphCredentials)), services.GetService <ILocalizationRepository>())); builder.Services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; }); builder.Services.Configure <RequestLocalizationOptions>(opts => { var supportedCultures = new List <CultureInfo> { new CultureInfo("en-US"), new CultureInfo("es-ES"), new CultureInfo("hi-IN") }; opts.DefaultRequestCulture = new RequestCulture("en-US"); opts.SupportedCultures = supportedCultures; opts.SupportedUICultures = supportedCultures; }); builder.Services.AddSingleton <ILocalizationRepository, LocalizationRepository>(); }