use crate::{
Client, Result,
endpoints::EndpointSpec,
responses::statements::{
EnterpriseValue, FinancialScore, LatestFinancialStatement, OwnerEarnings,
},
};
use super::{
EnterpriseValuesQuery, FinancialScoresQuery, LATEST_FINANCIAL_STATEMENTS_METADATA,
LatestFinancialStatementsQuery, OwnerEarningsQuery, WORLDWIDE_FINANCIAL_HISTORY_METADATA,
WORLDWIDE_FINANCIAL_SUMMARY_METADATA,
};
pub fn latest_financial_statements(
query: LatestFinancialStatementsQuery,
) -> EndpointSpec<LatestFinancialStatementsQuery, Vec<LatestFinancialStatement>> {
EndpointSpec::get(
"latest-financial-statements",
"latest-financial-statements",
query,
)
.with_metadata(LATEST_FINANCIAL_STATEMENTS_METADATA)
}
pub fn financial_scores(
query: FinancialScoresQuery,
) -> EndpointSpec<FinancialScoresQuery, Vec<FinancialScore>> {
EndpointSpec::get("financial-scores", "financial-scores", query)
.with_metadata(WORLDWIDE_FINANCIAL_SUMMARY_METADATA)
}
pub fn owner_earnings(
query: OwnerEarningsQuery,
) -> EndpointSpec<OwnerEarningsQuery, Vec<OwnerEarnings>> {
EndpointSpec::get("owner-earnings", "owner-earnings", query)
.with_metadata(WORLDWIDE_FINANCIAL_SUMMARY_METADATA)
}
pub fn enterprise_values(
query: EnterpriseValuesQuery,
) -> EndpointSpec<EnterpriseValuesQuery, Vec<EnterpriseValue>> {
EndpointSpec::get("enterprise-values", "enterprise-values", query)
.with_metadata(WORLDWIDE_FINANCIAL_HISTORY_METADATA)
}
impl Client {
pub async fn latest_financial_statements(
&self,
query: LatestFinancialStatementsQuery,
) -> Result<Vec<LatestFinancialStatement>> {
self.execute(&latest_financial_statements(query)).await
}
pub async fn financial_scores(
&self,
query: impl Into<FinancialScoresQuery>,
) -> Result<Vec<FinancialScore>> {
self.execute(&financial_scores(query.into())).await
}
pub async fn owner_earnings(
&self,
query: impl Into<OwnerEarningsQuery>,
) -> Result<Vec<OwnerEarnings>> {
self.execute(&owner_earnings(query.into())).await
}
pub async fn enterprise_values(
&self,
query: impl Into<EnterpriseValuesQuery>,
) -> Result<Vec<EnterpriseValue>> {
self.execute(&enterprise_values(query.into())).await
}
}