31 lines
1.2 KiB
C#
31 lines
1.2 KiB
C#
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<HealthResponse>()
|
|
.Produces<ApiError>(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<HealthResponse>()
|
|
.Produces<ApiError>(StatusCodes.Status429TooManyRequests)
|
|
.Produces(StatusCodes.Status503ServiceUnavailable)
|
|
.WithName("GetReadiness")
|
|
.WithTags("Health");
|
|
return endpoints;
|
|
}
|
|
}
|