use serde::Deserialize;
use serde_json::Value;
use super::super::protocol::{ResponseEnvelope, ResponseMeta};
use super::{HandlerContext, MethodError};
#[derive(Debug, Default, Deserialize)]
#[serde(deny_unknown_fields, default)]
pub struct StatusParams {}
pub(crate) async fn handle(ctx: &HandlerContext, params: Value) -> Result<Value, MethodError> {
let _params: StatusParams = match params {
Value::Null => StatusParams::default(),
other => serde_json::from_value(other).map_err(MethodError::InvalidParams)?,
};
let status = ctx.manager.status();
let envelope = ResponseEnvelope {
result: status,
meta: ResponseMeta::management(ctx.daemon_version),
};
serde_json::to_value(&envelope)
.map_err(|e| MethodError::Internal(anyhow::anyhow!("serialise daemon/status: {e}")))
}