Browse Source

darkfid: finalized get_balances

lunar-mining 4 năm trước cách đây
mục cha
commit
cf09678f3a
1 tập tin đã thay đổi với 23 bổ sung19 xóa
  1. 23 19
      src/bin/darkfid.rs

+ 23 - 19
src/bin/darkfid.rs

@@ -22,6 +22,7 @@ use log::debug;
 use serde_json::{json, Value};
 use serde_json::{json, Value};
 
 
 use async_std::sync::{Arc, Mutex};
 use async_std::sync::{Arc, Mutex};
+use std::collections::HashMap;
 use std::path::PathBuf;
 use std::path::PathBuf;
 use std::str::FromStr;
 use std::str::FromStr;
 
 
@@ -46,7 +47,7 @@ impl RequestHandler for Darkfid {
             Some("create_wallet") => return self.create_wallet(req.id, req.params).await,
             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("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_key") => return self.get_key(req.id, req.params).await,
-            //Some("get_balances") => return self.get_balances(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("get_token_id") => return self.get_token_id(req.id, req.params).await,
             Some("features") => return self.features(req.id, req.params).await,
             Some("features") => return self.features(req.id, req.params).await,
             Some("deposit") => return self.deposit(req.id, req.params).await,
             Some("deposit") => return self.deposit(req.id, req.params).await,
@@ -133,26 +134,29 @@ impl Darkfid {
         return JsonResult::Resp(jsonresp(json!(b58), id));
         return JsonResult::Resp(jsonresp(json!(b58), id));
     }
     }
 
 
+    // TODO: clean up these upwraps
+    //
     // --> {"method": "get_key", "params": []}
     // --> {"method": "get_key", "params": []}
     // <-- {"result": "balances": "[value: 0, token: btc]"}
     // <-- {"result": "balances": "[value: 0, token: btc]"}
-    //async fn get_balances(&self, id: Value, _params: Value) -> JsonResult {
-    //    let mut symbols = Vec::new();
-    //    let balances = self.client.lock().await.get_balances().await.unwrap();
-    //    for id in balances.values() {
-    //        let symbol = self
-    //            .drk_tokenlist
-    //            .clone()
-    //            .symbol_from_id(id.clone())
-    //            .unwrap();
-    //        symbols.push(symbol.unwrap().to_string());
-    //    }
-    //    for amount in balances.keys() {
-    //        if let Some(x) = balances.get_mut(amount) {
-    //            id = symbols;
-    //        }
-    //    }
-    //    return JsonResult::Err(jsonerr(InvalidNetworkParam, None, id));
-    //}
+    async fn get_balances(&self, id: Value, _params: Value) -> JsonResult {
+        let balances = self.client.lock().await.get_balances().await.unwrap();
+        let mut symbols = Vec::new();
+        for id in balances.values() {
+            let symbol = self
+                .drk_tokenlist
+                .clone()
+                .symbol_from_id(id.clone())
+                .unwrap();
+            symbols.push(symbol.unwrap().to_string());
+        }
+        let mut amounts = Vec::new();
+        for amount in balances.keys() {
+            amounts.push(amount);
+        }
+        let mut new_balances = HashMap::new();
+        new_balances.insert(symbols, amounts);
+        return JsonResult::Resp(jsonresp(json!(new_balances), id));
+    }
 
 
     // --> {"method": "get_token_id", "params": [network, token]}
     // --> {"method": "get_token_id", "params": [network, token]}
     // <-- {"result": "Ht5G1RhkcKnpLVLMhqJc5aqZ4wYUEbxbtZwGCVbgU7DL"}
     // <-- {"result": "Ht5G1RhkcKnpLVLMhqJc5aqZ4wYUEbxbtZwGCVbgU7DL"}