Skip to main content

fedimint_cli/
event_output.rs

1#[cfg(test)]
2mod tests;
3
4use fedimint_eventlog::EventLogEntry;
5use serde::Serialize;
6use serde_json::{Value, json};
7
8/// Render either event-log ID space with the same JSON and binary-payload
9/// fallback.
10pub(super) fn event_to_json(id: impl Serialize, event: &EventLogEntry) -> Value {
11    let module_id = event.module.as_ref().map(|module| module.id);
12    let module_kind = event.module.as_ref().map(|module| module.kind.clone());
13    json!({
14        "id": id,
15        "kind": event.kind,
16        "module_kind": module_kind,
17        "module_id": module_id,
18        "ts": event.ts_usecs,
19        "payload": serde_json::from_slice::<Value>(&event.payload)
20            .unwrap_or_else(|_| Value::String(hex::encode(&event.payload))),
21    })
22}