using FinalFactory.Rendezvous.Contracts; namespace FinalFactory.Rendezvous.Server.Observability; internal static class HealthEndpoints { public static IEndpointRouteBuilder MapRendezvousHealthEndpoints( this IEndpointRouteBuilder endpoints) { endpoints.MapGet( "/health/live", static () => Results.Ok(new HealthResponse { Status = "live" })) .Produces() .Produces(StatusCodes.Status429TooManyRequests) .WithName("GetLiveness") .WithTags("Health"); endpoints.MapGet( "/health/ready", static (RendezvousReadiness readiness) => !readiness.GetSnapshot().IsReady ? Results.StatusCode(StatusCodes.Status503ServiceUnavailable) : Results.Ok(new HealthResponse { Status = "ready" })) .Produces() .Produces(StatusCodes.Status429TooManyRequests) .Produces(StatusCodes.Status503ServiceUnavailable) .WithName("GetReadiness") .WithTags("Health"); return endpoints; } }