Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.webapps.galaxy.api.metrics

"""
API operations for for querying and recording user metrics from some client
(typically a user's browser).
"""

# TODO: facade or adapter to fluentd

import logging
from typing import Any

from fastapi import Body

from galaxy.managers.context import ProvidesUserContext
from galaxy.managers.metrics import (
    CreateMetricsPayload,
    MetricsManager,
)
from . import (
    depends,
    DependsOnTrans,
    Router,
)

log = logging.getLogger(__name__)


router = Router(tags=["metrics"])


[docs]@router.cbv class FastAPIMetrics: manager: MetricsManager = depends(MetricsManager)
[docs] @router.post( "/api/metrics", summary="Records a collection of metrics.", ) def create( self, trans: ProvidesUserContext = DependsOnTrans, payload: CreateMetricsPayload = Body(...), ) -> Any: """Record any metrics sent and return some status object.""" return self.manager.create(trans, payload)