Guilherme34's picture
Upload folder using huggingface_hub
aa15bce verified
from __future__ import annotations
from fastapi import APIRouter, Depends, HTTPException, Request, status
from ..config import Settings, get_settings
from ..models import (
HealthResponse,
RootResponse,
SetTimezoneRequest,
SetTimezoneResponse,
)
from ..services import get_timezone_store
router = APIRouter(tags=["meta"])
@router.get("/health", response_model=HealthResponse)
# Return service health status for monitoring and load balancers
def health(settings: Settings = Depends(get_settings)) -> HealthResponse:
return HealthResponse(ok=True, service="openpoke", version=settings.app_version)
@router.get("/meta", response_model=RootResponse)
# Return service metadata including available API endpoints
def meta(request: Request, settings: Settings = Depends(get_settings)) -> RootResponse:
endpoints = sorted(
{
route.path
for route in request.app.routes
if getattr(route, "include_in_schema", False) and route.path.startswith("/api/")
}
)
return RootResponse(
status="ok",
service="openpoke",
version=settings.app_version,
endpoints=endpoints,
)
@router.post("/meta/timezone", response_model=SetTimezoneResponse)
# Set the user's timezone for proper email timestamp formatting
def set_timezone(payload: SetTimezoneRequest) -> SetTimezoneResponse:
store = get_timezone_store()
try:
store.set_timezone(payload.timezone)
except ValueError as exc:
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc))
return SetTimezoneResponse(timezone=store.get_timezone())
@router.get("/meta/timezone", response_model=SetTimezoneResponse)
def get_timezone() -> SetTimezoneResponse:
store = get_timezone_store()
return SetTimezoneResponse(timezone=store.get_timezone())