From 7b988d820d4d050625f986dbb20ef367d466f72d Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Tue, 25 Feb 2025 11:46:09 +1300 Subject: [PATCH] nip86: fix output of some commands to be array of objects with keys --- src/web/management/mod.rs | 46 ++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/src/web/management/mod.rs b/src/web/management/mod.rs index 892259d..8f46cd7 100644 --- a/src/web/management/mod.rs +++ b/src/web/management/mod.rs @@ -12,9 +12,17 @@ use serde_json::{json, Map, Value}; mod auth; #[derive(Serialize)] -struct EventNeedingModeration { +struct EventResult { id: String, - reason: String, + #[serde(skip_serializing_if = "Option::is_none")] + reason: Option, +} + +#[derive(Serialize)] +struct PubkeyResult { + pubkey: String, + #[serde(skip_serializing_if = "Option::is_none")] + reason: Option, } fn respond( @@ -166,7 +174,7 @@ pub fn handle_inner(pubkey: Pubkey, command: Value) -> Result, Err } }; - let mut need_moderation: Vec = Vec::new(); + let mut need_moderation: Vec = Vec::new(); let (mut events, _redacted) = GLOBALS .store @@ -191,9 +199,9 @@ pub fn handle_inner(pubkey: Pubkey, command: Value) -> Result, Err continue; } - need_moderation.push(EventNeedingModeration { + need_moderation.push(EventResult { id: event.id().as_hex_string(), - reason: "unmoderated".to_string(), + reason: Some("unmoderated".to_string()), }); } @@ -240,11 +248,14 @@ pub fn handle_inner(pubkey: Pubkey, command: Value) -> Result, Err "listallowedevents" => { let approvals = crate::dump_event_approvals(GLOBALS.store.get().unwrap())?; - let ids: Vec = approvals + let ids: Vec = approvals .iter() .filter_map(|(id, appr)| { if *appr { - Some(id.as_hex_string()) + Some(EventResult { + id: id.as_hex_string(), + reason: None, + }) } else { None } @@ -256,13 +267,16 @@ pub fn handle_inner(pubkey: Pubkey, command: Value) -> Result, Err } "listbannedevents" => { let approvals = crate::dump_event_approvals(GLOBALS.store.get().unwrap())?; - let ids: Vec = approvals + let ids: Vec = approvals .iter() .filter_map(|(id, appr)| { if *appr { None } else { - Some(id.as_hex_string()) + Some(EventResult { + id: id.as_hex_string(), + reason: None, + }) } }) .collect(); @@ -272,11 +286,14 @@ pub fn handle_inner(pubkey: Pubkey, command: Value) -> Result, Err } "listallowedpubkeys" => { let approvals = crate::dump_pubkey_approvals(GLOBALS.store.get().unwrap())?; - let pubkeys: Vec = approvals + let pubkeys: Vec = approvals .iter() .filter_map(|(pk, appr)| { if *appr { - Some(pk.as_hex_string()) + Some(PubkeyResult { + pubkey: pk.as_hex_string(), + reason: None, + }) } else { None } @@ -288,13 +305,16 @@ pub fn handle_inner(pubkey: Pubkey, command: Value) -> Result, Err } "listbannedpubkeys" => { let approvals = crate::dump_pubkey_approvals(GLOBALS.store.get().unwrap())?; - let pubkeys: Vec = approvals + let pubkeys: Vec = approvals .iter() .filter_map(|(pk, appr)| { if *appr { None } else { - Some(pk.as_hex_string()) + Some(PubkeyResult { + pubkey: pk.as_hex_string(), + reason: None, + }) } }) .collect();