|
@@ -1,24 +1,34 @@
|
|
|
-namespace WebTemplate.Status;
|
|
|
|
|
|
|
+namespace WebTemplate.Status;
|
|
|
|
|
|
|
|
public class StatusEndpointModule : IAppConfigurationModule
|
|
public class StatusEndpointModule : IAppConfigurationModule
|
|
|
{
|
|
{
|
|
|
|
|
+ private readonly Func<IServiceProvider, IVersionInfo> _versionProvider;
|
|
|
|
|
+
|
|
|
|
|
+ public StatusEndpointModule(Func<IServiceProvider, IVersionInfo> versionProvider)
|
|
|
|
|
+ {
|
|
|
|
|
+ _versionProvider = versionProvider;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public void ConfigureServices(IServiceCollection services, IConfigurationRoot config)
|
|
public void ConfigureServices(IServiceCollection services, IConfigurationRoot config)
|
|
|
{
|
|
{
|
|
|
|
|
+ services.AddTransient<IVersionInfo>(_versionProvider);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void ConfigureApplication(WebApplication app)
|
|
public void ConfigureApplication(WebApplication app)
|
|
|
{
|
|
{
|
|
|
- app.MapGet("/v1/status", () => new ServiceStatus("OK", new VersionInfo(), new EnvironmentInfo(app.Environment)))
|
|
|
|
|
|
|
+ var reporter = new StatusReporter();
|
|
|
|
|
+
|
|
|
|
|
+ app.MapGet("v1/status", (IVersionInfo version, IServiceProvider serviceProvider) => new ServiceStatus("OK", version, reporter.StatusReport(serviceProvider)))
|
|
|
.WithName("StatusService")
|
|
.WithName("StatusService")
|
|
|
.WithOpenApi(operation =>
|
|
.WithOpenApi(operation =>
|
|
|
{
|
|
{
|
|
|
operation.Description =
|
|
operation.Description =
|
|
|
"""
|
|
"""
|
|
|
- Returns the overall service status, including version and environment information. This can be used
|
|
|
|
|
|
|
+ Returns the overall service status, including version and context information. This can be used
|
|
|
as a health check endpoint.
|
|
as a health check endpoint.
|
|
|
""";
|
|
""";
|
|
|
|
|
|
|
|
return operation;
|
|
return operation;
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
+}
|