pub struct Config {
pub credentials: Credentials,
pub rest_api: RestApiConfig,
pub websocket: WebSocketConfig,
pub database: DatabaseConfig,
pub rate_limiter: RateLimiterConfig,
pub sleep_hours: u64,
pub page_size: u32,
pub days_to_look_back: i64,
pub api_version: Option<u8>,
}Expand description
Main configuration for the IG Markets API client.
Debug is derived and delegates to each field’s Debug, so the redacting
Credentials and DatabaseConfig impls keep secrets out of the output;
Display is manual for the same reason.
Fields§
§credentials: CredentialsAuthentication credentials
rest_api: RestApiConfigREST API configuration
websocket: WebSocketConfigWebSocket API configuration
database: DatabaseConfigDatabase configuration for data persistence
rate_limiter: RateLimiterConfigRate limiter configuration for API requests
sleep_hours: u64Number of hours between transaction fetching operations
page_size: u32Number of items to retrieve per page in API requests
days_to_look_back: i64Number of days to look back when fetching historical data
api_version: Option<u8>API version to use for authentication: Some(2) for CST /
X-SECURITY-TOKEN, Some(3) for OAuth. Both constructors set
Some(3) (crate::constants::DEFAULT_API_VERSION); an explicit
None makes login fall back to v2.
Implementations§
Source§impl Config
impl Config
Sourcepub fn from_credentials(credentials: Credentials) -> Self
pub fn from_credentials(credentials: Credentials) -> Self
Creates a configuration from caller-supplied credentials, reading no
environment variable and loading no .env file.
This is the injection path for embedding applications that own their
configuration source (their own namespaced env vars, a config file, a
secrets manager). Pair it with
Client::with_config.
Config::new remains the .env / IG_* convenience path.
Every non-credential field takes its documented default (IG demo
endpoints — see the Default impls of RestApiConfig,
WebSocketConfig, RateLimiterConfig and DatabaseConfig).
Override individual sections with a struct-update expression, which
stays env-free because the base value is this constructor:
use ig_client::prelude::*;
let credentials = Credentials::new(
"user".to_string(),
"password".to_string(),
"ABC123".to_string(),
"api-key".to_string(),
);
let config = Config {
rest_api: RestApiConfig {
base_url: "https://demo-api.ig.com/gateway/deal".to_string(),
timeout: 30,
},
..Config::from_credentials(credentials)
};
assert_eq!(config.rest_api.base_url, "https://demo-api.ig.com/gateway/deal");§Arguments
credentials- IG credentials supplied by the caller
§Returns
A Config built entirely from credentials plus the documented defaults
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new configuration instance from the environment.
Loads a local .env file (via dotenv) and reads the IG_* /
DATABASE_* / TX_* environment variables, falling back to the
documented defaults for anything unset. Embedders that must not touch
the .env file or the IG_* namespace should use
Config::from_credentials instead.
§Returns
A new Config instance
Trait Implementations§
Source§impl Default for Config
impl Default for Config
Source§fn default() -> Self
fn default() -> Self
Delegates to Config::new and therefore loads a .env file and reads
the IG_* namespace — unlike the section-level Default impls above,
which are env-free. Config { .., ..Config::default() } still touches
the environment; use Config::from_credentials as the base value when
that is not acceptable.
Source§impl<'de> Deserialize<'de> for Config
impl<'de> Deserialize<'de> for Config
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnsafeUnpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more