Skip to content

Commit c61bc9c

Browse files
committed
ActiveOrdersをTradeApi traitで再実装した
1 parent 3748ecf commit c61bc9c

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

src/trade_api/active_orders.rs

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,47 @@
1-
extern crate reqwest;
1+
extern crate serde;
2+
extern crate serde_json;
23

34
use std::collections::HashMap;
45

5-
use core::*;
6+
use trade_api::TradeApi;
7+
use core::AccessKey;
68

79
builder!(ActiveOrdersBuilder => ActiveOrders {
810
access_key: AccessKey = AccessKey::new("", ""),
911
currency_pair: Option<String> = None
1012
});
1113

1214
impl ActiveOrders {
13-
pub fn exec(&self) -> reqwest::Result<String> {
14-
let param: &mut HashMap<String, String> = &mut HashMap::new();
15-
param.insert("method".to_string(), "active_orders".to_string());
15+
pub fn exec(&self) -> serde_json::Result<HashMap<u64, ActiveOrdersResponse>> {
16+
serde_json::from_value(<Self as TradeApi>::exec(&self)?)
17+
}
18+
}
19+
20+
impl TradeApi for ActiveOrders {
21+
fn method(&self) -> &str {
22+
"active_orders"
23+
}
24+
fn parameters(&self) -> HashMap<String, String> {
25+
let mut param = HashMap::new();
1626
if let Some(ref currency_pair) = self.currency_pair {
1727
param.insert(
1828
"currency_pair".to_string(),
1929
format!("{}", currency_pair.clone()),
2030
);
2131
}
22-
23-
let api = ApiBuilder::new()
24-
.access_key(self.access_key.clone())
25-
.uri("https://api.zaif.jp/tapi")
26-
.method(Method::Post)
27-
.param(param.clone())
28-
.finalize();
29-
30-
api.exec()
32+
param
33+
}
34+
fn access_key(&self) -> &AccessKey {
35+
&self.access_key
3136
}
3237
}
3338

39+
#[derive(Deserialize)]
40+
pub struct ActiveOrdersResponse {
41+
pub currency_pair: String,
42+
pub action: String,
43+
pub amount: f64,
44+
pub price: f64,
45+
pub timestamp: String,
46+
pub comment: String,
47+
}

0 commit comments

Comments
 (0)