openserve 2.0.3

A modern, high-performance, AI-enhanced file server built in Rust
Documentation
//! Metrics handler

use axum::response::IntoResponse;

/// Prometheus metrics endpoint
#[cfg(feature = "metrics")]
pub async fn metrics() -> impl IntoResponse {
    use prometheus::{Encoder, TextEncoder};
    
    let encoder = TextEncoder::new();
    let metric_families = prometheus::gather();
    let mut buffer = Vec::new();
    
    encoder.encode(&metric_families, &mut buffer).unwrap();
    
    (
        axum::http::StatusCode::OK,
        [("Content-Type", "text/plain; charset=utf-8")],
        String::from_utf8(buffer).unwrap()
    )
}

/// Metrics endpoint when metrics feature is disabled
#[cfg(not(feature = "metrics"))]
pub async fn metrics() -> impl IntoResponse {
    (
        axum::http::StatusCode::NOT_IMPLEMENTED,
        [("Content-Type", "text/plain")],
        "Metrics feature not enabled"
    )
}