bpx_api_client/routes/
account.rs1use crate::BpxClient;
2use crate::error::Result;
3use bpx_api_types::account::{
4 AccountMaxBorrow, AccountMaxWithdrawal, AccountSettings, ConvertDustPayload,
5 UpdateAccountPayload,
6};
7
8#[doc(hidden)]
9pub const API_ACCOUNT: &str = "/api/v1/account";
10#[doc(hidden)]
11pub const API_ACCOUNT_MAX_BORROW: &str = "/api/v1/account/limits/borrow";
12#[doc(hidden)]
13pub const API_ACCOUNT_MAX_WITHDRAWAL: &str = "/api/v1/account/limits/withdrawal";
14#[doc(hidden)]
15pub const API_ACCOUNT_CONVERT_DUST: &str = "/api/v1/account/convertDust";
16
17impl BpxClient {
18 pub async fn get_account(&self) -> Result<AccountSettings> {
20 let url = format!("{}{}", self.base_url, API_ACCOUNT);
21 let res = self.get(url).await?;
22 res.json().await.map_err(Into::into)
23 }
24
25 pub async fn get_account_max_borrow(&self, symbol: &str) -> Result<AccountMaxBorrow> {
27 let url = format!(
28 "{}{}?symbol={}",
29 self.base_url, API_ACCOUNT_MAX_BORROW, symbol
30 );
31 let res = self.get(url).await?;
32 res.json().await.map_err(Into::into)
33 }
34
35 pub async fn get_account_max_withdrawal(
37 &self,
38 symbol: &str,
39 auto_borrow: Option<bool>,
40 auto_lend_redeem: Option<bool>,
41 ) -> Result<AccountMaxWithdrawal> {
42 let mut url = format!(
43 "{}{}?symbol={}",
44 self.base_url, API_ACCOUNT_MAX_WITHDRAWAL, symbol
45 );
46 if let Some(auto_borrow) = auto_borrow {
47 url.push_str(&format!("&autoBorrow={auto_borrow}"));
48 }
49 if let Some(auto_lend_redeem) = auto_lend_redeem {
50 url.push_str(&format!("&autoLendRedeem={auto_lend_redeem}"));
51 }
52
53 let res = self.get(url).await?;
54 res.json().await.map_err(Into::into)
55 }
56
57 pub async fn update_account(&self, payload: UpdateAccountPayload) -> Result<()> {
59 let url = format!("{}{}", self.base_url, API_ACCOUNT);
60 self.patch(url, payload).await?;
61
62 Ok(())
63 }
64
65 pub async fn convert_dust_balance(&self, payload: ConvertDustPayload) -> Result<()> {
68 let url = format!("{}{}", self.base_url, API_ACCOUNT_CONVERT_DUST);
69 self.post(url, payload).await?;
70
71 Ok(())
72 }
73}