Пример #1
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IHostApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            MsSqlStreamStore streamStore,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            HealthCheckService healthCheckService)
        {
            StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag).GetAwaiter().GetResult();
            StartupHelpers.EnsureSqlStreamStoreSchema <Startup>(streamStore, loggerFactory);

            app
            .UseDatadog <Startup>(
                serviceProvider,
                loggerFactory,
                datadogToggle,
                debugDataDogToggle,
                _configuration["DataDog:ServiceName"])

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory,
                },
                Api =
                {
                    VersionProvider         = apiVersionProvider,
                    Info                    = groupName => $"exira.com - Dns API {groupName}",
                    CustomExceptionHandlers = new IExceptionHandler[]
                    {
                        new DomainExceptionHandler(),
                        new Exceptions.ApiExceptionHandler(),
                        new AggregateNotFoundExceptionHandling(),
                        new WrongExpectedVersionExceptionHandling(),
                        new InvalidTopLevelDomainExceptionHandling(),
                        new InvalidRecordTypeExceptionHandling(),
                        new InvalidServiceTypeExceptionHandling(),
                        new ValidationExceptionHandler(),
                    }
                },
                Server =
                {
                    PoweredByName = "exira.com",
                    ServerName    = "exira.com"
                },
                MiddlewareHooks =
                {
                    AfterMiddleware = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>(),
                },
            });
        }
Пример #2
0
 public static IApplicationBuilder UseDatadog <T>(
     this IApplicationBuilder app,
     IServiceProvider serviceProvider,
     ILoggerFactory loggerFactory,
     ApiDataDogToggle datadogToggle,
     ApiDebugDataDogToggle debugDataDogToggle,
     string serviceName,
     string traceIdHeaderName = DataDogOptions.DefaultTraceIdHeaderName,
     Func <StringValues, long> traceIdGenerator = null,
     Func <string, bool> shouldTracePath        = null,
     string parentSpanIdHeaderName = DataDogOptions.DefaultParentSpanIdHeaderName)
 {
     return(app.UseDataDog <T>(new DataDogOptions
     {
         Common =
         {
             ServiceProvider = serviceProvider,
             LoggerFactory   = loggerFactory
         },
         Toggles =
         {
             Enable = datadogToggle,
             Debug  = debugDataDogToggle
         },
         Tracing =
         {
             ServiceName            = serviceName,
             TraceIdHeaderName      = traceIdHeaderName,
             ParentSpanIdHeaderName = parentSpanIdHeaderName,
             TraceIdGenerator       = traceIdGenerator,
             ShouldTracePath        = shouldTracePath
         }
     }));
 }
Пример #3
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IHostingEnvironment env,
            IApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            MsSqlStreamStore streamStore,
            HealthCheckService healthCheckService)
        {
            StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag).GetAwaiter().GetResult();
            StartupHelpers.EnsureSqlStreamStoreSchema <Startup>(streamStore, loggerFactory);

            app
            .UseDatadog <Startup>(
                serviceProvider,
                loggerFactory,
                datadogToggle,
                debugDataDogToggle,
                _configuration["DataDog:ServiceName"])

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory,
                },
                Api =
                {
                    VersionProvider = apiVersionProvider,
                    Info            = groupName => $"exira.com - Account Projector API {groupName}",
                },
                Server =
                {
                    PoweredByName = "exira.com",
                    ServerName    = "exira.com"
                },
                MiddlewareHooks =
                {
                    AfterMiddleware = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>(),
                }
            });

            var projectionsManager = serviceProvider.GetRequiredService <IConnectedProjectionsManager>();

            projectionsManager.Start();
        }
Пример #4
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IHostingEnvironment env,
            IApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            MsSqlStreamStore streamStore,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            HealthCheckService healthCheckService)
        {
            StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag).GetAwaiter().GetResult();
            StartupHelpers.EnsureSqlStreamStoreSchema <Startup>(streamStore, loggerFactory);

            app
            .UseDatadog <Startup>(
                serviceProvider,
                loggerFactory,
                datadogToggle,
                debugDataDogToggle,
                _configuration["DataDog:ServiceName"])

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory
                },
                Api =
                {
                    VersionProvider         = apiVersionProvider,
                    Info                    = groupName => $"Basisregisters Vlaanderen - Dienstverleningsregister API {groupName}",
                    CustomExceptionHandlers = new []
                    {
                        new GetOrganisationFailedHandler()
                    }
                },
                MiddlewareHooks =
                {
                    AfterApiExceptionHandler = x => x.UseAuthentication(),
                    AfterMiddleware          = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>(),
                }
            });
        }
Пример #5
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IHostingEnvironment env,
            IApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            MsSqlStreamStore streamStore)
        {
            StartupHelpers.EnsureSqlStreamStoreSchema <Startup>(streamStore, loggerFactory);

            if (datadogToggle.FeatureEnabled)
            {
                if (debugDataDogToggle.FeatureEnabled)
                {
                    StartupHelpers.SetupSourceListener(serviceProvider.GetRequiredService <TraceSource>());
                }

                app.UseDataDogTracing(
                    serviceProvider.GetRequiredService <TraceSource>(),
                    _configuration["DataDog:ServiceName"],
                    pathToCheck => pathToCheck != "/");
            }

            app.UseDefaultForApi(new StartupOptions
            {
                ApplicationContainer = _applicationContainer,
                ServiceProvider      = serviceProvider,
                HostingEnvironment   = env,
                ApplicationLifetime  = appLifetime,
                LoggerFactory        = loggerFactory,
                Api =
                {
                    VersionProvider         = apiVersionProvider,
                    Info                    = groupName => $"Basisregisters Vlaanderen - Bank Account Number Registry API {groupName}",
                    CustomExceptionHandlers = new IExceptionHandler[]
                    {
                        new ValidationExceptionHandling(),
                    }
                },
                MiddlewareHooks =
                {
                    AfterMiddleware = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>(),
                },
            });
        }
Пример #6
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IHostApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            HealthCheckService healthCheckService)
        {
            StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag).GetAwaiter().GetResult();

            app
            .UseDataDog <Startup>(new DataDogOptions
            {
                Common =
                {
                    ServiceProvider = serviceProvider,
                    LoggerFactory   = loggerFactory
                },
                Toggles =
                {
                    Enable = datadogToggle,
                    Debug  = debugDataDogToggle
                },
                Tracing =
                {
                    ServiceName = _configuration["DataDog:ServiceName"],
                }
            })

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory
                },
                Api =
                {
                    VersionProvider     = apiVersionProvider,
                    Info                = groupName => $"Basisregisters Vlaanderen - Municipality Registry API {groupName}",
                    CSharpClientOptions =
                    {
                        ClassName = "MunicipalityRegistryProjector",
                        Namespace = "Be.Vlaanderen.Basisregisters"
                    },
                    TypeScriptClientOptions =
                    {
                        ClassName           = "MunicipalityRegistryProjector"
                    }
                },
                MiddlewareHooks =
                {
                    AfterMiddleware = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>(),
                }
            })

            .UseProjectionsManager(new ProjectionsManagerOptions
            {
                Common =
                {
                    ServiceProvider     = serviceProvider,
                    ApplicationLifetime = appLifetime
                }
            });
        }
Пример #7
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IHostApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            MsSqlStreamStore streamStore,
            HealthCheckService healthCheckService)
        {
            StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag).GetAwaiter().GetResult();
            StartupHelpers.EnsureSqlStreamStoreSchema <Startup>(streamStore, loggerFactory);

            app
            .UseDataDog <Startup>(new DataDogOptions
            {
                Common =
                {
                    ServiceProvider = serviceProvider,
                    LoggerFactory   = loggerFactory
                },
                Toggles =
                {
                    Enable = datadogToggle,
                    Debug  = debugDataDogToggle
                },
                Tracing =
                {
                    ServiceName = _configuration["DataDog:ServiceName"],
                }
            })

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory,
                },
                Api =
                {
                    VersionProvider     = apiVersionProvider,
                    Info                = groupName => $"Example Registry Projector API {groupName}",
                    CSharpClientOptions =
                    {
                        ClassName = "ExampleRegistry",
                        Namespace = "ExampleRegistry.Projector"
                    },
                    TypeScriptClientOptions =
                    {
                        ClassName           = "ExampleRegistry"
                    },
                },
                Server =
                {
                    PoweredByName = "Vlaamse overheid - Basisregisters Vlaanderen",
                    ServerName    = "agentschap Informatie Vlaanderen"
                },
                MiddlewareHooks =
                {
                    AfterMiddleware = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>(),
                }
            })

            .UseProjectionsManager(new ProjectionsManagerOptions
            {
                Common =
                {
                    ServiceProvider     = serviceProvider,
                    ApplicationLifetime = appLifetime
                }
            });
        }
Пример #8
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IHostApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle)
        {
            var version = Assembly.GetEntryAssembly().GetName().Version;

            app
            .UseDataDog <Startup>(new DataDogOptions
            {
                Common =
                {
                    ServiceProvider = serviceProvider,
                    LoggerFactory   = loggerFactory
                },
                Toggles =
                {
                    Enable = datadogToggle,
                    Debug  = debugDataDogToggle
                },
                Tracing =
                {
                    ServiceName       = _configuration["DataDog:ServiceName"],
                    TraceIdHeaderName = "X-Amzn-Trace-Id",
                    TraceIdGenerator  = traceHeader =>
                    {
                        var awsTraceId    = traceHeader
                                            .ToString()
                                            .Replace("\"", string.Empty)
                                            .Replace("Root=", string.Empty);

                        var traceIdHash   = Sha1.ComputeHash(Encoding.UTF8.GetBytes(awsTraceId));
                        var traceIdHex    = BitConverter.ToString(traceIdHash).Replace("-", string.Empty);
                        var traceIdNumber = BigInteger.Parse(traceIdHex,                   NumberStyles.HexNumber);
                        var traceId       = (long)BigInteger.Remainder(traceIdNumber,      new BigInteger(Math.Pow(10, 14)));
                        return(Math.Abs(traceId));
                    }
                }
            })

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory,
                },
                Api =
                {
                    DefaultCorsPolicy = StartupHelpers.AllowAnyOrigin,
                    VersionProvider   = apiVersionProvider,
                    Info                = groupName => $"Basisregisters Vlaanderen - API {_marketingVersion}",
                    Description         = _ => "Een stelsel van authentieke gegevensbronnen van de Vlaamse Overheid.",
                    ApplicationName     = _ => "Basisregisters Vlaanderen",
                    HeaderTitle         = groupName => "Basisregisters Vlaanderen",
                    HeaderLink          = groupName => _configuration["SiteUrl"],
                    FooterVersion       = $"{version.Minor}.{version.Build}.{version.Revision}",
                    HeadContent         = _ => @"
                            <style>
                                input.search-input {
                                    border-bottom: 0px
                                }

                                ul[role=""navigation""] + div {
                                    display: none;
                                }

                                div[data-section-id] {
                                    padding: 15px 0px;
                                }

                                li[data-item-id=""section/Introductie""],
                                li[data-item-id=""tag/Gemeenten""],
                                li[data-item-id=""tag/CRAB-Huisnummers""]
                                {
                                    border-top: 1px solid rgb(225, 225, 225);
                                }
                            </style>",
                    CSharpClientOptions =
                    {
                        ClassName = "BaseRegistry",
                        Namespace = "Be.Vlaanderen.Basisregisters"
                    },
                    TypeScriptClientOptions        =
                    {
                        ClassName                  = "BaseRegistry"
                    },
                    ProblemDetailsExceptionMappers = new [] { new GrbWfsExceptionMapping() }
                },
                MiddlewareHooks =
                {
                    AfterResponseCompression = x => x.UseHttpCacheHeaders(),
                }
            });
        }
Пример #9
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IHostApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            MsSqlStreamStore streamStore,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            HealthCheckService healthCheckService)
        {
            StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag).GetAwaiter().GetResult();
            StartupHelpers.EnsureSqlStreamStoreSchema <Startup>(streamStore, loggerFactory);

            app
            .UseDataDog <Startup>(new DataDogOptions
            {
                Common =
                {
                    ServiceProvider = serviceProvider,
                    LoggerFactory   = loggerFactory
                },
                Toggles =
                {
                    Enable = datadogToggle,
                    Debug  = debugDataDogToggle
                },
                Tracing =
                {
                    ServiceName = _configuration["DataDog:ServiceName"],
                }
            })

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory,
                },
                Api =
                {
                    VersionProvider         = apiVersionProvider,
                    Info                    = groupName => $"exira.com - Dns Projector API {groupName}",
                    CustomExceptionHandlers = new IExceptionHandler[]
                    {
                        new ValidationExceptionHandler(),
                    }
                },
                Server =
                {
                    PoweredByName = "exira.com",
                    ServerName    = "exira.com"
                },
                MiddlewareHooks =
                {
                    AfterMiddleware = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>(),
                }
            })

            .UseProjectionsManager(new ProjectionsManagerOptions
            {
                Common =
                {
                    ServiceProvider     = serviceProvider,
                    ApplicationLifetime = appLifetime
                }
            });
        }
Пример #10
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IHostApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            HealthCheckService healthCheckService)
        {
            StartupHelpers
            .CheckDatabases(healthCheckService, DatabaseTag)
            .GetAwaiter()
            .GetResult();

            app
            .UseDataDog <Startup>(new DataDogOptions
            {
                Common =
                {
                    ServiceProvider = serviceProvider,
                    LoggerFactory   = loggerFactory
                },
                Toggles =
                {
                    Enable = datadogToggle,
                    Debug  = debugDataDogToggle
                },
                Tracing =
                {
                    ServiceName = _configuration["DataDog:ServiceName"],
                }
            })

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory,
                },
                Api =
                {
                    VersionProvider     = apiVersionProvider,
                    Info                = groupName => $"Basisregisters Vlaanderen - Address Registry API {groupName}",
                    CSharpClientOptions =
                    {
                        ClassName = "AddressRegistry",
                        Namespace = "Be.Vlaanderen.Basisregisters"
                    },
                    TypeScriptClientOptions =
                    {
                        ClassName           = "AddressRegistry"
                    },
                    CustomExceptionHandlers = new IExceptionHandler[]
                    {
                        new CrabClientValidationExceptionHandler()
                    }
                },
                Server =
                {
                    PoweredByName = "Vlaamse overheid - Basisregisters Vlaanderen",
                    ServerName    = "agentschap Informatie Vlaanderen"
                }
            });
        }
Пример #11
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IHostApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            MsSqlStreamStore streamStore,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            HealthCheckService healthCheckService)
        {
            StartupHelpers.EnsureSqlStreamStoreSchema <Startup>(streamStore, loggerFactory);

            app
            .UseDataDog <Startup>(new DataDogOptions
            {
                Common =
                {
                    ServiceProvider = serviceProvider,
                    LoggerFactory   = loggerFactory
                },
                Toggles =
                {
                    Enable = datadogToggle,
                    Debug  = debugDataDogToggle
                },
                Tracing =
                {
                    ServiceName = _configuration["DataDog:ServiceName"],
                }
            })

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory,
                },
                Api =
                {
                    VersionProvider     = apiVersionProvider,
                    Info                = groupName => $"Basisregisters Vlaanderen - Address Registry API {groupName}",
                    CSharpClientOptions =
                    {
                        ClassName = "AddressRegistryCrabImport",
                        Namespace = "Be.Vlaanderen.Basisregisters"
                    },
                    TypeScriptClientOptions =
                    {
                        ClassName           = "AddressRegistryCrabImport"
                    }
                },
                Server =
                {
                    PoweredByName = "Vlaamse overheid - Basisregisters Vlaanderen",
                    ServerName    = "agentschap Informatie Vlaanderen"
                },
                MiddlewareHooks =
                {
                    AfterMiddleware = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>(),
                }
            });

            app.UseIdempotencyDatabaseMigrations()
            .UseCrabImportMigrations();

            MigrationsHelper.Run(
                _configuration.GetConnectionString("Sequences"),
                serviceProvider.GetService <ILoggerFactory>());

            new LegacyContextMigrationFactory()
            .CreateMigrator(_configuration, _loggerFactory)
            .MigrateAsync(new CancellationToken())
            .GetAwaiter()
            .GetResult();

            StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag).GetAwaiter().GetResult();
        }
Пример #12
0
        public void Configure(
            IServiceProvider serviceProvider,
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IHostApplicationLifetime appLifetime,
            ILoggerFactory loggerFactory,
            IApiVersionDescriptionProvider apiVersionProvider,
            ApiDataDogToggle datadogToggle,
            ApiDebugDataDogToggle debugDataDogToggle,
            HealthCheckService healthCheckService)
        {
            StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag).GetAwaiter().GetResult();

            app
            .UseDataDog <Startup>(new DataDogOptions
            {
                Common =
                {
                    ServiceProvider = serviceProvider,
                    LoggerFactory   = loggerFactory
                },
                Toggles =
                {
                    Enable = datadogToggle,
                    Debug  = debugDataDogToggle
                },
                Tracing =
                {
                    ServiceName = _configuration["DataDog:ServiceName"],
                }
            })

            .UseDefaultForApi(new StartupUseOptions
            {
                Common =
                {
                    ApplicationContainer = _applicationContainer,
                    ServiceProvider      = serviceProvider,
                    HostingEnvironment   = env,
                    ApplicationLifetime  = appLifetime,
                    LoggerFactory        = loggerFactory,
                },
                Api =
                {
                    VersionProvider     = apiVersionProvider,
                    Info                = groupName => $"Basisregisters.Vlaanderen - Parcel Information Registry API {groupName}",
                    CSharpClientOptions =
                    {
                        ClassName = "ParcelRegistryProjector",
                        Namespace = "Be.Vlaanderen.Basisregisters"
                    },
                    TypeScriptClientOptions = { ClassName = "ParcelRegistryProjector" }
                },
                Server =
                {
                    PoweredByName = "Vlaamse overheid - Basisregisters Vlaanderen",
                    ServerName    = "Digitaal Vlaanderen"
                },
                MiddlewareHooks = { AfterMiddleware = x => x.UseMiddleware <AddNoCacheHeadersMiddleware>() }
            });

            appLifetime.ApplicationStopping.Register(() => _projectionsCancellationTokenSource.Cancel());
            appLifetime.ApplicationStarted.Register(() =>
            {
                var projectionsManager = _applicationContainer.Resolve <IConnectedProjectionsManager>();
                projectionsManager.Resume(_projectionsCancellationTokenSource.Token);
            });
        }