Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions src/exchange/exchange_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,24 @@ impl ExchangeClient {
meta: Option<Meta>,
vault_address: Option<Address>,
) -> Result<ExchangeClient> {
let client = client.unwrap_or_default();
let base_url = base_url.unwrap_or(BaseUrl::Mainnet);
let is_mainnet = base_url.is_mainnet();
let base_url = base_url.get_url();
Self::with_custom_url(client, wallet, base_url, is_mainnet, meta, vault_address).await
}

pub async fn with_custom_url(
client: Option<Client>,
wallet: PrivateKeySigner,
base_url: String,
is_mainnet: bool,
meta: Option<Meta>,
vault_address: Option<Address>,
) -> Result<ExchangeClient> {
let client = client.unwrap_or_default();

let info = InfoClient::with_custom_url(None, base_url.clone(), is_mainnet, false).await?;

let info = InfoClient::new(None, Some(base_url)).await?;
let meta = if let Some(meta) = meta {
meta
} else {
Expand All @@ -132,7 +146,8 @@ impl ExchangeClient {
vault_address,
http_client: HttpClient {
client,
base_url: base_url.get_url(),
base_url,
is_mainnet,
},
coin_to_asset,
})
Expand Down
8 changes: 8 additions & 0 deletions src/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,14 @@ impl BaseUrl {
BaseUrl::Testnet => TESTNET_API_URL.to_string(),
}
}

pub(crate) fn is_mainnet(&self) -> bool {
match self {
BaseUrl::Mainnet => true,
BaseUrl::Testnet => false,
BaseUrl::Localhost => false,
}
}
}

lazy_static! {
Expand Down
36 changes: 28 additions & 8 deletions src/info/info_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ use tokio::sync::mpsc::UnboundedSender;

use crate::{
info::{
CandlesSnapshotResponse, FundingHistoryResponse, L2SnapshotResponse, OpenOrdersResponse,
OrderInfo, RecentTradesResponse, UserFillsResponse, UserStateResponse, ActiveAssetDataResponse,
ActiveAssetDataResponse, CandlesSnapshotResponse, FundingHistoryResponse,
L2SnapshotResponse, OpenOrdersResponse, OrderInfo, RecentTradesResponse, UserFillsResponse,
UserStateResponse,
},
meta::{AssetContext, Meta, SpotMeta, SpotMetaAndAssetCtxs},
prelude::*,
Expand Down Expand Up @@ -104,26 +105,41 @@ pub struct InfoClient {

impl InfoClient {
pub async fn new(client: Option<Client>, base_url: Option<BaseUrl>) -> Result<InfoClient> {
Self::new_internal(client, base_url, false).await
Self::with_base_url(client, base_url, false).await
}

pub async fn with_reconnect(
client: Option<Client>,
base_url: Option<BaseUrl>,
) -> Result<InfoClient> {
Self::new_internal(client, base_url, true).await
Self::with_base_url(client, base_url, true).await
}

async fn new_internal(
async fn with_base_url(
client: Option<Client>,
base_url: Option<BaseUrl>,
reconnect: bool,
) -> Result<InfoClient> {
let base_url = base_url.unwrap_or(BaseUrl::Mainnet);
let is_mainnet = base_url.is_mainnet();
let base_url = base_url.get_url();
Self::with_custom_url(client, base_url, is_mainnet, reconnect).await
}

pub async fn with_custom_url(
client: Option<Client>,
base_url: String,
is_mainnet: bool,
reconnect: bool,
) -> Result<InfoClient> {
let client = client.unwrap_or_default();
let base_url = base_url.unwrap_or(BaseUrl::Mainnet).get_url();

Ok(InfoClient {
http_client: HttpClient { client, base_url },
http_client: HttpClient {
client,
base_url,
is_mainnet,
},
ws_manager: None,
reconnect,
})
Expand Down Expand Up @@ -311,7 +327,11 @@ impl InfoClient {
self.send_info_request(input).await
}

pub async fn active_asset_data(&self, user: Address, coin: String) -> Result<ActiveAssetDataResponse> {
pub async fn active_asset_data(
&self,
user: Address,
coin: String,
) -> Result<ActiveAssetDataResponse> {
let input = InfoRequest::ActiveAssetData { user, coin };
self.send_info_request(input).await
}
Expand Down
5 changes: 3 additions & 2 deletions src/req.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use reqwest::{Client, Response};
use serde::Deserialize;

use crate::{prelude::*, BaseUrl, Error};
use crate::{prelude::*, Error};

#[derive(Deserialize, Debug)]
struct ErrorData {
Expand All @@ -14,6 +14,7 @@ struct ErrorData {
pub struct HttpClient {
pub client: Client,
pub base_url: String,
pub is_mainnet: bool,
}

async fn parse_response(response: Response) -> Result<String> {
Expand Down Expand Up @@ -70,6 +71,6 @@ impl HttpClient {
}

pub fn is_mainnet(&self) -> bool {
self.base_url == BaseUrl::Mainnet.get_url()
self.is_mainnet
}
}