diff --git a/PxWeb/Config/Api2/PxApiConfigurationOptions.cs b/PxWeb/Config/Api2/PxApiConfigurationOptions.cs index 225344ed..98a52b04 100644 --- a/PxWeb/Config/Api2/PxApiConfigurationOptions.cs +++ b/PxWeb/Config/Api2/PxApiConfigurationOptions.cs @@ -18,6 +18,7 @@ public class PxApiConfigurationOptions public string RoutePrefix { get; set; } = String.Empty; public List OutputFormats { get; set; } = new List(); public string DefaultOutputFormat { get; set; } = String.Empty; + public bool EnableSwaggerUI { get; set; } = false; } } diff --git a/PxWeb/Program.cs b/PxWeb/Program.cs index d14d0c71..ee57070f 100644 --- a/PxWeb/Program.cs +++ b/PxWeb/Program.cs @@ -143,14 +143,17 @@ public static void Main(string[] args) // Handle CORS configuration from appsettings.json bool corsEnbled = builder.Services.ConfigurePxCORS(builder, _logger); + // Bind the configuration to the PxApiConfigurationOptions class + var pxApiConfiguration = new PxApiConfigurationOptions(); + builder.Configuration.Bind("PxApiConfiguration", pxApiConfiguration); + var app = builder.Build(); - var routePrefix = builder.Configuration.GetSection("PxApiConfiguration:RoutePrefix").Value; - app.UseMiddleware(routePrefix); - app.UsePathBase(new PathString(routePrefix)); + app.UseMiddleware(pxApiConfiguration.RoutePrefix); + app.UsePathBase(new PathString(pxApiConfiguration.RoutePrefix)); // Configure the HTTP request pipeline. - if (app.Environment.IsDevelopment()) + if (pxApiConfiguration.EnableSwaggerUI || app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(options => @@ -171,7 +174,7 @@ public static void Main(string[] args) { app.UseAuthorization(); - app.UseWhen(context => context.Request.Path.StartsWithSegments(routePrefix + "/admin") || context.Request.Path.StartsWithSegments("/admin"), appBuilder => + app.UseWhen(context => context.Request.Path.StartsWithSegments(pxApiConfiguration.RoutePrefix + "/admin") || context.Request.Path.StartsWithSegments("/admin"), appBuilder => { appBuilder.UseAdminProtectionIpWhitelist(); appBuilder.UseAdminProtectionKey(); @@ -184,7 +187,7 @@ public static void Main(string[] args) app.UseIpRateLimiting(); } - app.UseWhen(context => !context.Request.Path.StartsWithSegments(routePrefix + "/admin") || context.Request.Path.StartsWithSegments("/admin"), appBuilder => + app.UseWhen(context => !context.Request.Path.StartsWithSegments(pxApiConfiguration.RoutePrefix + "/admin") || context.Request.Path.StartsWithSegments("/admin"), appBuilder => { appBuilder.UseCacheMiddleware(); }); diff --git a/PxWeb/appsettings.Release.json b/PxWeb/appsettings.Release.json index 93ecd7cb..23f6f948 100644 --- a/PxWeb/appsettings.Release.json +++ b/PxWeb/appsettings.Release.json @@ -61,7 +61,8 @@ "relational_table", "px" ], - "DefaultOutputFormat": "px" + "DefaultOutputFormat": "px", + "EnableSwaggerUI": false }, "LuceneConfiguration": { "IndexDirectory": "Database" diff --git a/PxWeb/appsettings.json b/PxWeb/appsettings.json index a7bc6758..15664235 100644 --- a/PxWeb/appsettings.json +++ b/PxWeb/appsettings.json @@ -63,7 +63,8 @@ "relational_table", "px" ], - "DefaultOutputFormat": "px" + "DefaultOutputFormat": "px", + "EnableSwaggerUI": false }, "LuceneConfiguration": { "IndexDirectory": "Database" diff --git a/PxWebApi.BigTests/AdminDatabaseController/test_appsettings.json b/PxWebApi.BigTests/AdminDatabaseController/test_appsettings.json index 5200f64c..3cfaf21c 100644 --- a/PxWebApi.BigTests/AdminDatabaseController/test_appsettings.json +++ b/PxWebApi.BigTests/AdminDatabaseController/test_appsettings.json @@ -63,7 +63,8 @@ "relational_table", "px" ], - "DefaultOutputFormat": "px" + "DefaultOutputFormat": "px", + "EnableSwaggerUI": false }, "LuceneConfiguration": { "IndexDirectory": "Database"