bitbank_api/private/
fetch_active_orders.rs1use super::*;
2
3#[derive(Deserialize)]
4struct Response {
5 orders: Vec<OrderInfo>,
6}
7
8#[serde_as]
9#[derive(TypedBuilder, Serialize, Debug)]
10pub struct Params {
11 #[serde_as(as = "DisplayFromStr")]
12 pair: Pair,
13 #[builder(default, setter(strip_option))]
14 count: Option<u64>,
15 #[builder(default, setter(strip_option))]
16 from_id: Option<u64>,
17 #[builder(default, setter(strip_option))]
18 end_id: Option<u64>,
19 #[builder(default, setter(strip_option))]
20 #[serde_as(as = "Option<TimestampMilliSeconds>")]
21 since: Option<NaiveDateTime>,
22 #[builder(default, setter(strip_option))]
23 #[serde_as(as = "Option<TimestampMilliSeconds>")]
24 end: Option<NaiveDateTime>,
25}
26
27pub async fn get(cred: Credential, params: Params) -> anyhow::Result<Vec<OrderInfo>> {
28 let resp: Response = ApiExec { cred }
29 .get("/v1/user/spot/active_orders", to_query_params(params)?)
30 .await?;
31 Ok(resp.orders)
32}
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 #[test]
39 fn test_params() -> anyhow::Result<()> {
40 let params = Params::builder()
41 .pair(Pair(XRP, JPY))
42 .since(NaiveDateTime::from_timestamp_opt(10, 0).unwrap())
43 .count(100)
44 .build();
45 assert_eq!(
46 to_query_params(params)?,
47 "pair=xrp_jpy&count=100&since=10000"
48 );
49 Ok(())
50 }
51}