From 83a9ac84a7d52299bde9b215740dc5ea7b54ffd8 Mon Sep 17 00:00:00 2001 From: ghassmo Date: Sun, 2 Jan 2022 23:27:51 +0400 Subject: [PATCH] drk: get all addresses from darkfid --- src/bin/darkfid.rs | 1 + src/bin/drk.rs | 23 ++++++++++++++++++++++- src/cli/cli_parser.rs | 5 ++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/bin/darkfid.rs b/src/bin/darkfid.rs index ac2dab37d..45afb7bf1 100644 --- a/src/bin/darkfid.rs +++ b/src/bin/darkfid.rs @@ -74,6 +74,7 @@ impl RequestHandler for Darkfid { Some("create_wallet") => return self.create_wallet(req.id, req.params).await, Some("key_gen") => return self.key_gen(req.id, req.params).await, Some("get_key") => return self.get_key(req.id, req.params).await, + Some("get_keys") => return self.get_keys(req.id, req.params).await, Some("get_balances") => return self.get_balances(req.id, req.params).await, Some("get_token_id") => return self.get_token_id(req.id, req.params).await, Some("features") => return self.features(req.id, req.params).await, diff --git a/src/bin/drk.rs b/src/bin/drk.rs index e8765159a..e0f74dd74 100644 --- a/src/bin/drk.rs +++ b/src/bin/drk.rs @@ -99,6 +99,14 @@ impl Drk { Ok(self.request(req).await?) } + // --> {"jsonrpc": "2.0", "method": "get_keys", "params": [], "id": 42} + // <-- {"jsonrpc": "2.0", "result": "[vdNS7oBj7KvsMWWmo9r96SV4SqATLrGsH2a3PGpCfJC, ...]", "id": + // 42} + async fn get_keys(&self) -> Result { + let req = jsonrpc::request(json!("get_keys"), json!([])); + Ok(self.request(req).await?) + } + // --> {"jsonrpc": "2.0", "method": "get_key", "params": ["solana", "usdc"], "id": 42} // <-- {"jsonrpc": "2.0", "result": "vdNS7oBj7KvsMWWmo9r96SV4SqATLrGsH2a3PGpCfJC", "id": 42} async fn get_token_id(&self, network: &str, token: &str) -> Result { @@ -170,7 +178,7 @@ async fn start(config: &DrkConfig, options: CliDrk) -> Result<()> { println!("Features: {}", &reply.to_string()); return Ok(()) } - Some(CliDrkSubCommands::Wallet { create, keygen, address, balances }) => { + Some(CliDrkSubCommands::Wallet { create, keygen, address, balances, addresses }) => { if create { let reply = client.create_wallet().await?; if reply.as_bool().unwrap() { @@ -197,6 +205,19 @@ async fn start(config: &DrkConfig, options: CliDrk) -> Result<()> { return Ok(()) } + if addresses { + let reply = client.get_keys().await?; + println!("Wallet addresses: "); + if reply.as_array().is_some() { + for address in reply.as_array().unwrap() { + println!("- {}", address); + } + } else { + println!("Empty!!",); + } + return Ok(()) + } + if balances { let reply = client.get_balances().await?; diff --git a/src/cli/cli_parser.rs b/src/cli/cli_parser.rs index 89561089c..2e0913d71 100644 --- a/src/cli/cli_parser.rs +++ b/src/cli/cli_parser.rs @@ -14,9 +14,12 @@ pub enum CliDrkSubCommands { /// Generate wallet keypair #[clap(long)] keygen: bool, - /// Get wallet address + /// Get default wallet address #[clap(long)] address: bool, + /// Get wallet addresses + #[clap(long)] + addresses: bool, /// Get wallet balances #[clap(long)] balances: bool,