"""Infrastructure endpoints.""" from fastapi import APIRouter, Depends, status from pydantic import UUID4 from splitio.client.factory import ( Client as SplitioClient, ) from product_staging.api.auth import identity_uuid_from_scope from product_staging.api.datasources import get_splitio_client from product_staging.api.schemas.infra import HelloResponse, HelloSplitResponse from product_staging.connectors.features import BooleanFeature from product_staging.constants.features import ( FEATURE_FLAG_CCM_SAY_BONJOUR, ) router = APIRouter(tags=["Infrastructure"]) @router.get( "/hello/", operation_id="hello", response_model=HelloResponse, summary="Hello World", description="A simple endpoint to check if the service is running.", status_code=status.HTTP_200_OK, ) async def hello() -> HelloResponse: return HelloResponse.model_validate({"status": "ok"}) @router.get( "/hello/split", operation_id="hello_split", response_model=HelloSplitResponse, description="Endpoint to check splitio connectivity.", status_code=status.HTTP_200_OK, ) def hello_split( identity_uuid: UUID4 = Depends(identity_uuid_from_scope), splitio_client: SplitioClient = Depends(get_splitio_client), ) -> HelloSplitResponse: """Endpoint to check splitio connectivity. Feature Flags: - ccm_say_bonjour Args: splitio_client: Split.io client connection Returns: Response: JSON response containing message """ bonjour_feature = BooleanFeature( client=splitio_client, feature_name=FEATURE_FLAG_CCM_SAY_BONJOUR ) if bonjour_feature.is_on_for_identity(str(identity_uuid)): return HelloSplitResponse(message="bonjour") return HelloSplitResponse(message="hello")