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>(), }, }); }
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 } })); }
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(); }
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>(), } }); }
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>(), }, }); }
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 } }); }
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 } }); }
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(), } }); }
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 } }); }
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" } }); }
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(); }
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); }); }