Bladeren bron

drk: get all addresses from darkfid

ghassmo 4 jaren geleden
bovenliggende
commit
83a9ac84a7
3 gewijzigde bestanden met toevoegingen van 27 en 2 verwijderingen
  1. 1 0
      src/bin/darkfid.rs
  2. 22 1
      src/bin/drk.rs
  3. 4 1
      src/cli/cli_parser.rs

+ 1 - 0
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,

+ 22 - 1
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<Value> {
+        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<Value> {
@@ -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?;
 

+ 4 - 1
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,