From 40bf516264ace3a8eb9beee29a00b3162288bd3a Mon Sep 17 00:00:00 2001 From: Butterfly Dev Date: Tue, 7 Apr 2026 03:09:08 +0000 Subject: [PATCH] =?UTF-8?q?server:=20api/health.rs=20=E2=80=94=20GET=20/ap?= =?UTF-8?q?i/health=20returns=20uptime,=20session/agent=20counts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/api/health.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 server/src/api/health.rs diff --git a/server/src/api/health.rs b/server/src/api/health.rs new file mode 100644 index 0000000..f81ed05 --- /dev/null +++ b/server/src/api/health.rs @@ -0,0 +1,21 @@ +use actix_web::{web, HttpResponse}; +use std::sync::Arc; + +use crate::models::{ApiResponse, HealthInfo}; +use crate::state::AppState; + +/// `GET /api/health` +/// +/// Returns server uptime, active sessions, connected agents and version. +pub async fn health(state: web::Data>) -> HttpResponse { + let uptime = state.started_at.elapsed().as_secs(); + let (sessions, agents) = state.stats(); + let info = HealthInfo { + status: "ok".into(), + uptime_secs: uptime, + active_sessions: sessions, + connected_agents: agents, + version: env!("CARGO_PKG_VERSION").into(), + }; + HttpResponse::Ok().json(ApiResponse::ok(info)) +}