1use crate::client::Client;
2use crate::errors::*;
3use crate::model;
4
5#[derive(Clone)]
6pub struct AccountClient {
7 client: Client,
8}
9
10impl AccountClient {
11 pub fn new(api_key: Option<String>, secret_key: Option<String>) -> Self {
12 AccountClient {
13 client: Client::new(api_key, secret_key),
14 }
15 }
16
17 pub fn get_account(&self) -> Result<model::AccountInfo> {
18 let payload: String = format!("{}", "{}");
19 let data = self.client.get_signed("/account".into(), payload, None)?;
20 let account: model::Account = serde_json::from_str(data.as_str())?;
21 Ok(account.result)
22 }
23
24 pub fn get_positions(&self) -> Result<Vec<model::Position>> {
25 let payload: String = format!("{}", "{}");
26 let data = self.client.get_signed("/positions".into(), payload, None)?;
27 let positions: model::Positions = serde_json::from_str(data.as_str())?;
28 Ok(positions.result)
29 }
30
31 pub fn change_account_leverage(&self, leverage: i64) -> Result<bool> {
32 let payload = json!({ "leverage": leverage });
33 let data =
34 self.client
35 .post_signed("/account/leverage".into(), payload.to_string(), None)?;
36 let r: model::AnotherOption = serde_json::from_str(data.as_str())?;
37 Ok(r.success)
38 }
39}