fuel-web-utils 0.0.27

Fuel library for web utils
use std::sync::Arc;

use actix_web::{web, HttpResponse, Result};

use crate::server::state::StateProvider;

pub async fn get_metrics<T: StateProvider>(
    state: web::Data<Arc<T>>,
) -> Result<HttpResponse> {
    Ok(HttpResponse::Ok()
        .content_type(
            "application/openmetrics-text; version=1.0.0; charset=utf-8",
        )
        .body(state.get_metrics().await))
}

pub async fn get_health<T: StateProvider>(
    state: web::Data<Arc<T>>,
) -> Result<HttpResponse> {
    if !state.is_healthy().await {
        return Ok(
            HttpResponse::ServiceUnavailable().body("Service Unavailable")
        );
    }
    Ok(HttpResponse::Ok().json(state.get_health().await))
}