mod api;
mod model;
mod wire;
pub use model::{
InsiderRosterHolder, InsiderTransaction, InstitutionalHolder, MajorHolder,
NetSharePurchaseActivity,
};
use crate::{
YfClient, YfError,
core::client::{CacheMode, RetryConfig},
};
pub struct HoldersBuilder {
client: YfClient,
symbol: String,
cache_mode: CacheMode,
retry_override: Option<RetryConfig>,
}
impl HoldersBuilder {
pub fn new(client: &YfClient, symbol: impl Into<String>) -> Self {
Self {
client: client.clone(),
symbol: symbol.into(),
cache_mode: CacheMode::Use,
retry_override: None,
}
}
#[must_use]
pub const fn cache_mode(mut self, mode: CacheMode) -> Self {
self.cache_mode = mode;
self
}
#[must_use]
pub fn retry_policy(mut self, cfg: Option<RetryConfig>) -> Self {
self.retry_override = cfg;
self
}
pub async fn major_holders(&self) -> Result<Vec<MajorHolder>, YfError> {
api::major_holders(
&self.client,
&self.symbol,
self.cache_mode,
self.retry_override.as_ref(),
)
.await
}
pub async fn institutional_holders(&self) -> Result<Vec<InstitutionalHolder>, YfError> {
api::institutional_holders(
&self.client,
&self.symbol,
self.cache_mode,
self.retry_override.as_ref(),
)
.await
}
pub async fn mutual_fund_holders(&self) -> Result<Vec<InstitutionalHolder>, YfError> {
api::mutual_fund_holders(
&self.client,
&self.symbol,
self.cache_mode,
self.retry_override.as_ref(),
)
.await
}
pub async fn insider_transactions(&self) -> Result<Vec<InsiderTransaction>, YfError> {
api::insider_transactions(
&self.client,
&self.symbol,
self.cache_mode,
self.retry_override.as_ref(),
)
.await
}
pub async fn insider_roster_holders(&self) -> Result<Vec<InsiderRosterHolder>, YfError> {
api::insider_roster_holders(
&self.client,
&self.symbol,
self.cache_mode,
self.retry_override.as_ref(),
)
.await
}
pub async fn net_share_purchase_activity(
&self,
) -> Result<Option<NetSharePurchaseActivity>, YfError> {
api::net_share_purchase_activity(
&self.client,
&self.symbol,
self.cache_mode,
self.retry_override.as_ref(),
)
.await
}
}