use serde_json;
use std::collections::HashMap;
use crate::core::AccessKey;
use crate::trade_api::TradeApi;
builder!(ActiveOrdersBuilder => ActiveOrders {
access_key: AccessKey = AccessKey::new("", ""),
currency_pair: Option<String> = None
});
impl ActiveOrders {
pub fn exec(&self) -> crate::Result<HashMap<u64, ActiveOrdersResponse>> {
Ok(serde_json::from_value(<Self as TradeApi>::exec(&self)?)?)
}
}
impl TradeApi for ActiveOrders {
fn method(&self) -> &str {
"active_orders"
}
fn parameters(&self) -> HashMap<String, String> {
let mut param = HashMap::new();
if let Some(ref currency_pair) = self.currency_pair {
param.insert(
"currency_pair".to_string(),
format!("{}", currency_pair.clone()),
);
}
param
}
fn access_key(&self) -> &AccessKey {
&self.access_key
}
}
#[derive(Deserialize)]
pub struct ActiveOrdersResponse {
pub currency_pair: String,
pub action: String,
pub amount: f64,
pub price: f64,
pub timestamp: String,
pub comment: String,
}