diff --git a/EstateReportingAPI/Bootstrapper/MiddlewareRegistry.cs b/EstateReportingAPI/Bootstrapper/MiddlewareRegistry.cs index 6e13dfb..3061de9 100644 --- a/EstateReportingAPI/Bootstrapper/MiddlewareRegistry.cs +++ b/EstateReportingAPI/Bootstrapper/MiddlewareRegistry.cs @@ -19,7 +19,19 @@ namespace EstateReportingAPI.Bootstrapper{ public class MiddlewareRegistry : ServiceRegistry{ public MiddlewareRegistry() { + this.ConfigureHealthChecks(); + this.ConfigureSwagger(); + this.ConfigureAuthentication(); + this.ConfigureControllers(); + this.ConfigureMiddlewareLogging(); + this.ConfigureHttpJsonOptions(options => + { + options.SerializerOptions.PropertyNamingPolicy = new SnakeCaseNamingPolicy(); + options.SerializerOptions.PropertyNameCaseInsensitive = true; // optional, but safer + }); + } + private void ConfigureHealthChecks(){ var connectionStringSection = Startup.Configuration.GetSection("ConnectionStrings"); if (connectionStringSection.Exists() == false) { @@ -34,7 +46,9 @@ public MiddlewareRegistry() failureStatus: HealthStatus.Degraded, tags: new[] { "db", "sql", "sqlserver" }); } + } + private void ConfigureSwagger(){ this.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo{ @@ -61,7 +75,9 @@ public MiddlewareRegistry() }); this.AddSwaggerExamplesFromAssemblyOf(); + } + private void ConfigureAuthentication(){ String? inTestMode = Environment.GetEnvironmentVariable("InTestMode"); if (String.Compare(inTestMode, Boolean.TrueString, StringComparison.InvariantCultureIgnoreCase) != 0){ this.AddAuthentication(options => { @@ -79,16 +95,18 @@ public MiddlewareRegistry() options.Audience = ConfigurationReader.GetValue("SecurityConfiguration", "ApiName"); options.TokenValidationParameters = new TokenValidationParameters{ - ValidateAudience = false, - ValidAudience = - ConfigurationReader.GetValue("SecurityConfiguration", "ApiName"), - ValidIssuer = - ConfigurationReader.GetValue("SecurityConfiguration", "Authority"), - }; + ValidateAudience = false, + ValidAudience = + ConfigurationReader.GetValue("SecurityConfiguration", "ApiName"), + ValidIssuer = + ConfigurationReader.GetValue("SecurityConfiguration", "Authority"), + }; options.IncludeErrorDetails = true; }); } + } + private void ConfigureControllers(){ this.AddControllers().AddNewtonsoftJson(options => { options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; options.SerializerSettings.TypeNameHandling = TypeNameHandling.None; @@ -99,7 +117,9 @@ public MiddlewareRegistry() Assembly assembly = this.GetType().GetTypeInfo().Assembly; this.AddMvcCore().AddApplicationPart(assembly).AddControllersAsServices(); + } + private void ConfigureMiddlewareLogging(){ bool logRequests = ConfigurationReader.GetValueOrDefault("MiddlewareLogging", "LogRequests", true); bool logResponses = ConfigurationReader.GetValueOrDefault("MiddlewareLogging", "LogResponses", true); LogLevel middlewareLogLevel = ConfigurationReader.GetValueOrDefault("MiddlewareLogging", "MiddlewareLogLevel", LogLevel.Warning); @@ -108,12 +128,6 @@ public MiddlewareRegistry() new RequestResponseMiddlewareLoggingConfig(middlewareLogLevel, logRequests, logResponses); this.AddSingleton(config); - - this.ConfigureHttpJsonOptions(options => - { - options.SerializerOptions.PropertyNamingPolicy = new SnakeCaseNamingPolicy(); - options.SerializerOptions.PropertyNameCaseInsensitive = true; // optional, but safer - }); } private HttpClientHandler ApiEndpointHttpHandler(IServiceProvider serviceProvider){