use crate::audit_verify;
use crate::state::*;
use axum::{extract::State, routing::*, Json};
pub fn routes() -> axum::Router<AppState> {
axum::Router::new()
.route("/api/audit/heads", get(audit_heads))
.route("/api/audit/config", get(audit_config))
.route("/api/audit/verify", post(audit_verify_endpoint))
}
async fn audit_heads(State(state): State<AppState>) -> Json<serde_json::Value> {
let heads = state.audit_log.heads();
Json(serde_json::json!({ "heads": heads }))
}
async fn audit_config(State(state): State<AppState>) -> Json<serde_json::Value> {
Json(serde_json::json!({
"mode": state.audit_log.mode(),
"modes_available": ["off", "default"],
}))
}
async fn audit_verify_endpoint(State(state): State<AppState>) -> Json<serde_json::Value> {
let report = audit_verify::verify_all(state.data_dir.as_deref());
Json(serde_json::to_value(report).unwrap_or_default())
}