pub mod historical;
pub mod intraday;
use super::client::RestClient;
pub struct FutOptClient<'a> {
pub(crate) client: &'a RestClient,
}
impl<'a> FutOptClient<'a> {
pub fn intraday(&self) -> FutOptIntradayClient<'a> {
FutOptIntradayClient {
client: self.client,
}
}
pub fn historical(&self) -> FutOptHistoricalClient<'a> {
FutOptHistoricalClient {
client: self.client,
}
}
}
pub struct FutOptIntradayClient<'a> {
pub(crate) client: &'a RestClient,
}
pub struct FutOptHistoricalClient<'a> {
pub(crate) client: &'a RestClient,
}
#[cfg(test)]
mod tests {
use super::*;
use crate::rest::Auth;
#[test]
fn test_futopt_client_creation() {
let client = RestClient::new(Auth::SdkToken("test".to_string()));
let futopt = FutOptClient { client: &client };
assert_eq!(
futopt.client.get_base_url(),
"https://api.fugle.tw/marketdata/v1.0"
);
}
#[test]
fn test_futopt_intraday_client_creation() {
let client = RestClient::new(Auth::SdkToken("test".to_string()));
let futopt = FutOptClient { client: &client };
let intraday = futopt.intraday();
assert_eq!(
intraday.client.get_base_url(),
"https://api.fugle.tw/marketdata/v1.0"
);
}
#[test]
fn test_futopt_historical_client_creation() {
let client = RestClient::new(Auth::SdkToken("test".to_string()));
let futopt = FutOptClient { client: &client };
let historical = futopt.historical();
assert_eq!(
historical.client.get_base_url(),
"https://api.fugle.tw/marketdata/v1.0"
);
}
#[test]
fn test_futopt_client_chaining() {
let client = RestClient::new(Auth::SdkToken("test".to_string()));
let _intraday = FutOptClient { client: &client }.intraday();
let _historical = FutOptClient { client: &client }.historical();
}
}