mod builder;
pub(crate) mod http;
pub use builder::IgClientBuilder;
use std::sync::Arc;
use crate::accounts::AccountsApi;
use crate::client_sentiment::ClientSentimentApi;
use crate::config::IgConfig;
use crate::dealing::DealingApi;
use crate::history::HistoryApi;
use crate::markets::MarketsApi;
use crate::operations::OperationsApi;
use crate::prices::PricesApi;
use crate::repeat_dealing::RepeatDealingApi;
use crate::session::{Credentials, SessionApi, SessionHandle, SharedSession};
#[cfg(feature = "stream")]
use crate::streaming::client::StreamingApi;
use crate::watchlists::WatchlistsApi;
use http::Transport;
#[derive(Debug, Clone)]
pub struct IgClient {
pub(crate) transport: Transport,
pub(crate) session: SharedSession,
pub(crate) credentials: Option<Credentials>,
pub(crate) config: Arc<IgConfig>,
}
impl IgClient {
pub fn builder() -> IgClientBuilder {
IgClientBuilder::default()
}
pub fn config(&self) -> &IgConfig {
&self.config
}
pub fn accounts(&self) -> AccountsApi<'_> {
AccountsApi { client: self }
}
pub fn client_sentiment(&self) -> ClientSentimentApi<'_> {
ClientSentimentApi { client: self }
}
pub fn dealing(&self) -> DealingApi<'_> {
DealingApi::new(self)
}
pub fn history(&self) -> HistoryApi<'_> {
HistoryApi { client: self }
}
pub fn markets(&self) -> MarketsApi<'_> {
MarketsApi { client: self }
}
pub fn operations(&self) -> OperationsApi<'_> {
OperationsApi { client: self }
}
pub fn prices(&self) -> PricesApi<'_> {
PricesApi { client: self }
}
pub fn repeat_dealing(&self) -> RepeatDealingApi<'_> {
RepeatDealingApi { client: self }
}
pub fn session(&self) -> SessionApi {
SessionApi {
handle: SessionHandle {
transport: self.transport.clone(),
session: self.session.clone(),
credentials: self.credentials.clone(),
},
}
}
pub fn watchlists(&self) -> WatchlistsApi<'_> {
WatchlistsApi { client: self }
}
#[cfg(feature = "stream")]
#[cfg_attr(docsrs, doc(cfg(feature = "stream")))]
pub fn streaming(&self) -> StreamingApi<'_> {
StreamingApi { client: self }
}
}