pub mod builder;
pub mod historical;
pub mod realtime;
use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
pub enum TradingHours {
#[default]
Regular,
Extended,
}
impl TradingHours {
pub fn use_rth(&self) -> bool {
matches!(self, TradingHours::Regular)
}
pub fn from_use_rth(use_rth: bool) -> Self {
if use_rth {
TradingHours::Regular
} else {
TradingHours::Extended
}
}
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum IgnoreSize {
Yes,
No,
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum SmartDepth {
Yes,
#[default]
No,
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MarketDataType {
Unknown = 0,
Realtime = 1,
Frozen = 2,
Delayed = 3,
DelayedFrozen = 4,
}
impl From<i32> for MarketDataType {
fn from(value: i32) -> Self {
match value {
1 => Self::Realtime,
2 => Self::Frozen,
3 => Self::Delayed,
4 => Self::DelayedFrozen,
_ => Self::Unknown,
}
}
}
pub(crate) mod encoders {
use crate::Error;
use super::MarketDataType;
pub(crate) fn encode_request_market_data_type(market_data_type: MarketDataType) -> Result<Vec<u8>, Error> {
use prost::Message;
let request = crate::proto::MarketDataTypeRequest {
market_data_type: Some(market_data_type as i32),
};
Ok(crate::messages::encode_protobuf_message(
crate::messages::OutgoingMessages::RequestMarketDataType as i32,
&request.encode_to_vec(),
))
}
}
#[cfg(test)]
#[path = "tests.rs"]
mod tests;