Exemple #1
0
        public override void Configure(IFunctionsHostBuilder builder)
        {
            #region null checks
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            #endregion

            var connectionString = Environment.GetEnvironmentVariable("AzureAppConfigurationConnectionString");

            if (string.IsNullOrEmpty(connectionString))
            {
                throw new InvalidOperationException("AzureAppConfigurationConnectionString app setting is required");
            }

            var configuration = new ConfigurationBuilder()
                                .AddCatalogueScannerAzureAppConfiguration(connectionString, out var refresherSupplier)
                                .Build();

            ICatalogueScannerHostBuilder catalogueScannerHostBuilder = new CatalogueScannerHostBuilder(builder, configuration);

            catalogueScannerHostBuilder.Services.SetConfigurationRefresher(refresherSupplier);

            catalogueScannerHostBuilder
            .AddPlugin <CoreCatalogueScannerPlugin>()
            .AddPlugin <OrchardCoreLocalisationCatalogueScannerPlugin>()
            .AddPlugin <SaleFinderCatalogueScannerPlugin>();
        }
Exemple #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddServerSideBlazor();
            services.AddMatBlazor();

            services.AddScoped <TokenProvider>();

            services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
            .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))
            .EnableTokenAcquisitionToCallDownstreamApi()
            .AddInMemoryTokenCaches();

            services.Configure <CatalogueScannerApiOptions>(Configuration.GetSection(CatalogueScannerApiOptions.CatalogueScannerApi));

            services.AddHttpClient(CatalogueScannerApiOptions.CatalogueScannerApi, (serviceProvider, httpClient) =>
            {
                var options = serviceProvider
                              .GetRequiredService <IOptions <CatalogueScannerApiOptions> >()
                              .Value;

                if (options.BaseAddress == null)
                {
                    throw new InvalidOperationException($"{CatalogueScannerApiOptions.CatalogueScannerApi}:{nameof(options.BaseAddress)} app setting must be configured");
                }

                httpClient.BaseAddress = options.BaseAddress;
            });

            services.AddHttpClient <CatalogueScanStateService>(CatalogueScannerApiOptions.CatalogueScannerApi, (httpClient) =>
            {
                var baseAddress        = httpClient.BaseAddress ?? throw new InvalidOperationException($"{nameof(httpClient)}.{nameof(httpClient.BaseAddress)} is null");
                httpClient.BaseAddress = httpClient.BaseAddress.AppendPath("CatalogueScanState/");
            });

            services.AddSingleton <ILocalizationFileLocationProvider, ContentRootPoFileLocationProvider>();

            services.AddScoped <TimeZoneService>();

            IFunctionsHostBuilder functionsHostBuilder = new DummyFunctionsHostBuilder(services);

            ICatalogueScannerHostBuilder catalogueScannerHostBuilder = new CatalogueScannerHostBuilder(functionsHostBuilder, Configuration);

            catalogueScannerHostBuilder
            .AddPlugin <CoreCatalogueScannerPlugin>()
            .AddPlugin <OrchardCoreLocalisationCatalogueScannerPlugin>()
            .AddPlugin <SaleFinderCatalogueScannerPlugin>();


            string applicationInsightsConnectionString = Configuration["APPINSIGHTS_CONNECTIONSTRING"];

            if (!string.IsNullOrEmpty(applicationInsightsConnectionString))
            {
                services.AddApplicationInsightsTelemetry(applicationInsightsConnectionString);
            }
        }