From 45f7c672acd9188613e406d51e45eb9a22071f29 Mon Sep 17 00:00:00 2001 From: Alexander PapaTutuWawa Date: Mon, 21 Apr 2025 13:20:20 +0200 Subject: [PATCH] Add health endpoints --- src/xmpp_api/api/routers/v1/__init__.py | 3 ++- src/xmpp_api/api/routers/v1/health.py | 31 +++++++++++++++++++++++++ src/xmpp_api/api/types/health.py | 19 +++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 src/xmpp_api/api/routers/v1/health.py create mode 100644 src/xmpp_api/api/types/health.py diff --git a/src/xmpp_api/api/routers/v1/__init__.py b/src/xmpp_api/api/routers/v1/__init__.py index ff9a9fb..c31298a 100644 --- a/src/xmpp_api/api/routers/v1/__init__.py +++ b/src/xmpp_api/api/routers/v1/__init__.py @@ -1,8 +1,9 @@ from fastapi import APIRouter -from xmpp_api.api.routers.v1 import bot, user +from xmpp_api.api.routers.v1 import bot, user, health router = APIRouter(prefix="/api/v1") router.include_router(bot.router) router.include_router(user.router) +router.include_router(health.router) diff --git a/src/xmpp_api/api/routers/v1/health.py b/src/xmpp_api/api/routers/v1/health.py new file mode 100644 index 0000000..88e6b94 --- /dev/null +++ b/src/xmpp_api/api/routers/v1/health.py @@ -0,0 +1,31 @@ +from fastapi import APIRouter, Response + +from xmpp_api.api.types.health import HealthResponse, ReadinessResponse +from xmpp_api.xmpp.component import XmppApiComponentDep + + +router = APIRouter(prefix="/health") + + +@router.get("/readiness") +def get_is_ready( + component: XmppApiComponentDep, response: Response +) -> ReadinessResponse: + component_ready = component.is_connected() + + response.status_code = 200 if component_ready else 503 + return ReadinessResponse( + component=component_ready, + ) + + +@router.get("/healthy") +def get_is_healthy( + component: XmppApiComponentDep, response: Response +) -> HealthResponse: + component_ready = component.is_connected() + + response.status_code = 200 if component_ready else 503 + return HealthResponse( + component=component_ready, + ) diff --git a/src/xmpp_api/api/types/health.py b/src/xmpp_api/api/types/health.py new file mode 100644 index 0000000..4d71800 --- /dev/null +++ b/src/xmpp_api/api/types/health.py @@ -0,0 +1,19 @@ +from pydantic import BaseModel + + +class ReadinessResponse(BaseModel): + """ + API response for the readiness endpoint + """ + + # Is the component connected + component: bool + + +class HealthResponse(BaseModel): + """ + API response for the health endpoint + """ + + # Is the component healthy + component: bool