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

token_list: write NetworkName, tokenID to drk_tokenlist hashmap

lunar-mining 4 лет назад
Родитель
Сommit
ca2fc9f361
1 измененных файлов с 20 добавлено и 6 удалено
  1. 20 6
      src/util/token_list.rs

+ 20 - 6
src/util/token_list.rs

@@ -1,4 +1,7 @@
-use crate::{util::NetworkName, Error, Result};
+use crate::{
+    util::{generate_id, NetworkName},
+    Error, Result,
+};
 use serde_json::Value;
 use std::collections::HashMap;
 
@@ -15,11 +18,22 @@ impl TokenList {
         let sol_tokenlist: Value = serde_json::from_str(&file_contents)?;
         let mut drk_tokenlist = HashMap::new();
 
-        // for tkn in sol_tokenlist:
-        //          generate_id(tkn, Solana)
-        // let btc = generate_id(tkn, BTC)
-        //
-        // let tokenid = generate_id(
+        let tokens = sol_tokenlist["tokens"]
+            .as_array()
+            .ok_or(Error::TokenParseError)?;
+        let mut symbols = Vec::new();
+        for item in tokens {
+            let symbol = item["symbol"].as_str().unwrap();
+            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,