From 3c05ed70fc11f6b0dfba82fa4b07b14bd95f546b Mon Sep 17 00:00:00 2001 From: Dastan-glitch Date: Thu, 10 Mar 2022 16:38:13 -0500 Subject: [PATCH] bin/tau-cli: remove Client struct and imple and adding optional feature on some subcommands --- bin/dnetview/src/ui.rs | 4 +- bin/tau-cli/src/main.rs | 86 ++++++++++++++++++----------------------- 2 files changed, 39 insertions(+), 51 deletions(-) diff --git a/bin/dnetview/src/ui.rs b/bin/dnetview/src/ui.rs index 0803263ed..28674abbb 100644 --- a/bin/dnetview/src/ui.rs +++ b/bin/dnetview/src/ui.rs @@ -163,7 +163,7 @@ fn render_inbound(view: View, f: &mut Frame<'_, B>, length: usize) - f.render_widget(info_graph, info_slice[0]); f.render_widget(title_graph, title_slice[0]); - return inbound_info.len() + title.len() + length + 2; + return inbound_info.len() + title.len() + length + 2 } fn render_outbound(view: View, f: &mut Frame<'_, B>) -> usize { @@ -223,7 +223,7 @@ fn render_outbound(view: View, f: &mut Frame<'_, B>) -> usize { f.render_widget(title_graph, title_slice[0]); let out_len = slots.len() + title.len(); - return out_len; + return out_len } fn render_info_right( diff --git a/bin/tau-cli/src/main.rs b/bin/tau-cli/src/main.rs index 5c82e3b61..b619713aa 100644 --- a/bin/tau-cli/src/main.rs +++ b/bin/tau-cli/src/main.rs @@ -19,13 +19,13 @@ pub enum CliTauSubCommands { #[clap(long)] desc: String, #[clap(short, long)] - assign: String, + assign: Option, #[clap(short, long)] - project: String, + project: Option, #[clap(short, long)] - due: String, + due: Option, #[clap(short, long)] - rank: u64, + rank: Option, }, } @@ -44,64 +44,52 @@ pub struct CliTau { pub command: Option, } -pub struct Client { - url: String, -} +async fn request(r: jsonrpc::JsonRequest, url: String) -> Result { + let reply: JsonResult = match jsonrpc::send_request(&Url::parse(&url)?, json!(r), None).await { + Ok(v) => v, + Err(e) => return Err(e), + }; -impl Client { - pub fn new(url: String) -> Self { - Self { url } - } + match reply { + JsonResult::Resp(r) => { + debug!(target: "RPC", "<-- {}", serde_json::to_string(&r)?); + Ok(r.result) + } - async fn request(&self, r: jsonrpc::JsonRequest) -> Result { - let reply: JsonResult = - match jsonrpc::send_request(&Url::parse(&self.url)?, json!(r), None).await { - Ok(v) => v, - Err(e) => return Err(e), - }; + JsonResult::Err(e) => { + debug!(target: "RPC", "<-- {}", serde_json::to_string(&e)?); + Err(Error::JsonRpcError(e.error.message.to_string())) + } - match reply { - JsonResult::Resp(r) => { - debug!(target: "RPC", "<-- {}", serde_json::to_string(&r)?); - Ok(r.result) - } - - JsonResult::Err(e) => { - debug!(target: "RPC", "<-- {}", serde_json::to_string(&e)?); - Err(Error::JsonRpcError(e.error.message.to_string())) - } - - JsonResult::Notif(n) => { - debug!(target: "RPC", "<-- {}", serde_json::to_string(&n)?); - Err(Error::JsonRpcError("Unexpected reply".to_string())) - } + JsonResult::Notif(n) => { + debug!(target: "RPC", "<-- {}", serde_json::to_string(&n)?); + Err(Error::JsonRpcError("Unexpected reply".to_string())) } } +} - // Add new task and returns `true` upon success. - // --> {"jsonrpc": "2.0", "method": "add", "params": ["title", "desc", ["assign"], ["project"], "due", "rank"], "id": 1} - // <-- {"jsonrpc": "2.0", "result": true, "id": 1} - async fn add( - &self, - title: &str, - desc: &str, - assign: &str, - project: &str, - due: &str, - rank: u64, - ) -> Result { - let req = jsonrpc::request(json!("add"), json!([title, desc, assign, project, due, rank])); - Ok(self.request(req).await?) - } +// Add new task and returns `true` upon success. +// --> {"jsonrpc": "2.0", "method": "add", "params": ["title", "desc", ["assign"], ["project"], "due", "rank"], "id": 1} +// <-- {"jsonrpc": "2.0", "result": true, "id": 1} +async fn add( + url: String, + title: String, + desc: String, + assign: Option, + project: Option, + due: Option, + rank: Option, +) -> Result { + let req = jsonrpc::request(json!("add"), json!([title, desc, assign, project, due, rank])); + Ok(request(req, url).await?) } async fn start(options: CliTau) -> Result<()> { let rpc_addr = "tcp://127.0.0.1:8875"; - let client = Client::new(rpc_addr.to_string()); if let Some(CliTauSubCommands::Add { title, desc, assign, project, due, rank }) = options.command { - client.add(&title, &desc, &assign, &project, &due, rank).await?; + add(rpc_addr.to_string(), title.clone(), desc, assign, project, due, rank).await?; println!("Added task: {}", title); return Ok(()) }