bitbank-api 0.5.1

Rust library for bitbank API
Documentation
use super::*;

#[derive(Deserialize, Debug)]
struct Response {
    pairs: Vec<PairInfo>,
}

#[serde_as]
#[derive(Deserialize, Debug)]
pub struct PairInfo {
    #[serde_as(as = "DisplayFromStr")]
    pub name: Pair,
    #[serde_as(as = "DisplayFromStr")]
    pub base_asset: Asset,
    #[serde_as(as = "DisplayFromStr")]
    pub quote_asset: Asset,
    #[serde_as(as = "DisplayFromStr")]
    pub maker_fee_rate_base: f64,
    #[serde_as(as = "DisplayFromStr")]
    pub taker_fee_rate_base: f64,
    #[serde_as(as = "DisplayFromStr")]
    pub maker_fee_rate_quote: f64,
    #[serde_as(as = "DisplayFromStr")]
    pub taker_fee_rate_quote: f64,
    #[serde_as(as = "DisplayFromStr")]
    pub unit_amount: f64,
    #[serde_as(as = "DisplayFromStr")]
    pub limit_max_amount: f64,
    #[serde_as(as = "DisplayFromStr")]
    pub market_max_amount: f64,
    pub price_digits: u8,
    pub amount_digits: u8,
    pub is_enabled: bool,
    pub stop_order: bool,
    pub stop_order_and_cancel: bool,
    pub stop_market_order: bool,
    pub stop_stop_order: bool,
    pub stop_stop_limit_order: bool,
    pub stop_buy_order: bool,
    pub stop_sell_order: bool,
}

#[derive(TypedBuilder)]
pub struct Params {}

pub async fn get(_: Params) -> anyhow::Result<Vec<PairInfo>> {
    let path = "/v1/spot/pairs";
    let params = "".to_owned();
    let resp: Response = do_get_private(path, params).await?;
    Ok(resp.pairs)
}

#[cfg(test)]
mod tests {
    use super::*;
    #[tokio::test]
    async fn test_pairs() -> anyhow::Result<()> {
        let params = Params::builder().build();
        let resp = get(params).await?;
        dbg!(&resp);
        Ok(())
    }
}