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>();
        }
Exemplo n.º 2
0
        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>();
        }
Exemplo n.º 4
0
        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>();
        }
Exemplo n.º 5
0
        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>();
        }