pub mod rest_api;
pub mod websocket_api;
pub mod websocket_streams;
use crate::common::{
config::{ConfigurationRestApi, ConfigurationWebsocketApi, ConfigurationWebsocketStreams},
constants::{
DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL,
DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL,
DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL,
DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL,
DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL,
DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL,
},
utils::build_user_agent,
};
pub struct DerivativesTradingCoinFuturesRestApi {}
impl DerivativesTradingCoinFuturesRestApi {
#[must_use]
pub fn from_config(mut config: ConfigurationRestApi) -> rest_api::RestApi {
config.user_agent = build_user_agent("derivatives-trading-coin-futures");
if config.base_path.is_none() {
config.base_path = Some(DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL.to_string());
}
rest_api::RestApi::new(config)
}
#[must_use]
pub fn production(mut config: ConfigurationRestApi) -> rest_api::RestApi {
config.base_path = Some(DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL.to_string());
DerivativesTradingCoinFuturesRestApi::from_config(config)
}
#[must_use]
pub fn testnet(mut config: ConfigurationRestApi) -> rest_api::RestApi {
config.base_path = Some(DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL.to_string());
DerivativesTradingCoinFuturesRestApi::from_config(config)
}
}
pub struct DerivativesTradingCoinFuturesWsApi {}
impl DerivativesTradingCoinFuturesWsApi {
#[must_use]
pub fn from_config(mut config: ConfigurationWebsocketApi) -> websocket_api::WebsocketApiHandle {
config.user_agent = build_user_agent("derivatives-trading-coin-futures");
if config.ws_url.is_none() {
config.ws_url = Some(DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL.to_string());
}
websocket_api::WebsocketApiHandle::new(config)
}
#[must_use]
pub fn production(mut config: ConfigurationWebsocketApi) -> websocket_api::WebsocketApiHandle {
config.ws_url = Some(DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL.to_string());
DerivativesTradingCoinFuturesWsApi::from_config(config)
}
#[must_use]
pub fn testnet(mut config: ConfigurationWebsocketApi) -> websocket_api::WebsocketApiHandle {
config.ws_url = Some(DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL.to_string());
DerivativesTradingCoinFuturesWsApi::from_config(config)
}
}
pub struct DerivativesTradingCoinFuturesWsStreams {}
impl DerivativesTradingCoinFuturesWsStreams {
#[must_use]
pub fn from_config(
mut config: ConfigurationWebsocketStreams,
) -> websocket_streams::WebsocketStreamsHandle {
config.user_agent = build_user_agent("derivatives-trading-coin-futures");
if config.ws_url.is_none() {
config.ws_url = Some(DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL.to_string());
}
websocket_streams::WebsocketStreamsHandle::new(config)
}
#[must_use]
pub fn production(
mut config: ConfigurationWebsocketStreams,
) -> websocket_streams::WebsocketStreamsHandle {
config.ws_url = Some(DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL.to_string());
DerivativesTradingCoinFuturesWsStreams::from_config(config)
}
#[must_use]
pub fn testnet(
mut config: ConfigurationWebsocketStreams,
) -> websocket_streams::WebsocketStreamsHandle {
config.ws_url = Some(DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL.to_string());
DerivativesTradingCoinFuturesWsStreams::from_config(config)
}
}