Просмотр исходного кода

token_list: refactored TokenList and fixed generate_id error

lunar-mining 4 лет назад
Родитель
Сommit
82d300dccc
3 измененных файлов с 24 добавлено и 16 удалено
  1. 3 1
      src/bin/darkfid.rs
  2. 1 1
      src/util/mod.rs
  3. 20 14
      src/util/token_list.rs

+ 3 - 1
src/bin/darkfid.rs

@@ -370,6 +370,8 @@ impl Darkfid {
     async fn transfer(&self, id: Value, params: Value) -> JsonResult {
         //let token_vec = self.wallet.get_token_ids();
 
+        //for (network_name, token_id) in self.tokenlist.drk_tokenlist.iter() {}
+
         let args = params.as_array();
 
         if args.is_none() {
@@ -390,7 +392,7 @@ impl Darkfid {
             return JsonResult::Err(jsonerr(InvalidTokenIdParam, None, id));
         }
 
-        let _token = address.as_str().unwrap();
+        let _token = token.as_str().unwrap();
 
         if address.as_str().is_none() {
             return JsonResult::Err(jsonerr(InvalidAddressParam, None, id));

+ 1 - 1
src/util/mod.rs

@@ -6,4 +6,4 @@ pub mod token_list;
 pub use net_name::NetworkName;
 pub use parse::{assign_id, decimals, decode_base10, encode_base10, generate_id};
 pub use path::{expand_path, join_config_path};
-pub use token_list::TokenList;
+pub use token_list::{DrkTokenList, TokenList};

+ 20 - 14
src/util/token_list.rs

@@ -8,7 +8,6 @@ use std::collections::HashMap;
 #[derive(Debug, Clone)]
 pub struct TokenList {
     sol_tokenlist: Value,
-    drk_tokenlist: HashMap<NetworkName, jubjub::Fr>,
 }
 
 impl TokenList {
@@ -16,7 +15,6 @@ impl TokenList {
         // TODO: FIXME
         let file_contents = std::fs::read_to_string("token/solanatokenlist.json")?;
         let sol_tokenlist: Value = serde_json::from_str(&file_contents)?;
-        let mut drk_tokenlist = HashMap::new();
 
         let tokens = sol_tokenlist["tokens"]
             .as_array()
@@ -27,17 +25,7 @@ impl TokenList {
             symbols.push(symbol.to_string());
         }
 
-        for symbol in symbols {
-            let id = generate_id(&symbol, &NetworkName::Solana)?;
-            drk_tokenlist.insert(NetworkName::Solana, id);
-        }
-
-        // TODO: add btc_id, NetworkName::Bitcoin to drk_tokenlist
-
-        Ok(Self {
-            sol_tokenlist,
-            drk_tokenlist,
-        })
+        Ok(Self { sol_tokenlist })
     }
 
     pub fn get_symbols(self) -> Result<Vec<String>> {
@@ -52,7 +40,7 @@ impl TokenList {
         return Ok(symbols);
     }
 
-    pub fn search_id(self, symbol: &str) -> Result<String> {
+    pub fn search_id(&self, symbol: &str) -> Result<String> {
         let tokens = self.sol_tokenlist["tokens"]
             .as_array()
             .ok_or(Error::TokenParseError)?;
@@ -82,6 +70,24 @@ impl TokenList {
     }
 }
 
+pub struct DrkTokenList {
+    drk_tokenlist: HashMap<String, jubjub::Fr>,
+}
+
+impl DrkTokenList {
+    pub fn new(list: TokenList) -> Result<Self> {
+        let mut drk_tokenlist = HashMap::new();
+        let symbols = list.clone().get_symbols()?;
+        for symbol in symbols {
+            let id = list.clone().search_id(&symbol)?;
+            let drk_id = generate_id(&id, &NetworkName::Solana)?;
+            drk_tokenlist.insert(symbol, drk_id);
+        }
+        // TODO: add btc_id, NetworkName::Bitcoin to drk_tokenlist
+        Ok(Self { drk_tokenlist })
+    }
+}
+
 mod tests {
 
     use super::*;