from __future__ import annotations import logging from fastapi import APIRouter, Depends from fastapi.responses import Response from prometheus_client import CONTENT_TYPE_LATEST, generate_latest from yuxi.channel.container import ChannelContainer, get_channel from yuxi.channel.interfaces.rest.auth.depends import channel_auth_depends logger = logging.getLogger(__name__) router = APIRouter() @router.get("/metrics") async def metrics( channel: ChannelContainer = Depends(get_channel), _: bool = Depends(channel_auth_depends), ): if channel.sse_endpoint and channel.metrics: await channel.metrics.set_sse_connections(channel.sse_endpoint.connection_count) data = generate_latest() return Response(content=data, media_type=CONTENT_TYPE_LATEST)