|
@@ -4,6 +4,7 @@ use crate::{
|
|
|
};
|
|
};
|
|
|
use serde_json::Value;
|
|
use serde_json::Value;
|
|
|
use std::collections::HashMap;
|
|
use std::collections::HashMap;
|
|
|
|
|
+use std::iter::FromIterator;
|
|
|
|
|
|
|
|
#[derive(Debug, Clone)]
|
|
#[derive(Debug, Clone)]
|
|
|
pub struct SolTokenList {
|
|
pub struct SolTokenList {
|
|
@@ -91,15 +92,22 @@ pub struct DrkTokenList {
|
|
|
|
|
|
|
|
impl DrkTokenList {
|
|
impl DrkTokenList {
|
|
|
pub fn new(list: SolTokenList) -> Result<Self> {
|
|
pub fn new(list: SolTokenList) -> Result<Self> {
|
|
|
- let mut drk_tokenlist = HashMap::new();
|
|
|
|
|
|
|
+ // get symbols
|
|
|
let symbols = list.clone().get_symbols()?;
|
|
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
|
|
|
|
|
|
|
+ // get ids
|
|
|
|
|
+ let ids: Vec<jubjub::Fr> = symbols
|
|
|
|
|
+ .iter()
|
|
|
|
|
+ .map(|sym| generate_id(sym, &NetworkName::Solana).unwrap())
|
|
|
|
|
+ .collect();
|
|
|
|
|
+
|
|
|
|
|
+ // create the hashmap
|
|
|
|
|
+ let drk_tokenlist: HashMap<String, jubjub::Fr> = symbols
|
|
|
|
|
+ .iter()
|
|
|
|
|
+ .zip(ids.iter())
|
|
|
|
|
+ .map(|(key, value)| return (key.clone(), value.clone()))
|
|
|
|
|
+ .collect();
|
|
|
|
|
+
|
|
|
Ok(Self { drk_tokenlist })
|
|
Ok(Self { drk_tokenlist })
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -107,7 +115,7 @@ impl DrkTokenList {
|
|
|
mod tests {
|
|
mod tests {
|
|
|
|
|
|
|
|
use super::*;
|
|
use super::*;
|
|
|
- use crate::util::SolTokenList;
|
|
|
|
|
|
|
+ use crate::util::{DrkTokenList, SolTokenList};
|
|
|
use crate::Result;
|
|
use crate::Result;
|
|
|
|
|
|
|
|
#[test]
|
|
#[test]
|
|
@@ -128,4 +136,11 @@ mod tests {
|
|
|
}
|
|
}
|
|
|
Ok(())
|
|
Ok(())
|
|
|
}
|
|
}
|
|
|
|
|
+ #[test]
|
|
|
|
|
+ pub fn test_hashmap() -> Result<()> {
|
|
|
|
|
+ let token = SolTokenList::new()?;
|
|
|
|
|
+ let drk_token = DrkTokenList::new(token)?;
|
|
|
|
|
+ println!("{:?}", drk_token.drk_tokenlist);
|
|
|
|
|
+ Ok(())
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|