#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use finance_query::Ticker;
let ticker = Ticker::new("AAPL").await?;
let price = ticker.price().await?;
if let Some(p) = price {
println!(
"Market State: {}",
p.market_state.as_deref().unwrap_or("N/A")
);
println!("Currency: {}", p.currency.as_deref().unwrap_or("N/A"));
}
let financial_data = ticker.financial_data().await?;
if let Some(fd) = financial_data {
let revenue = fd.total_revenue.as_ref().and_then(|v| v.raw).unwrap_or(0);
println!("Revenue: ${}", revenue);
let profit_margins = fd
.profit_margins
.as_ref()
.and_then(|v| v.raw)
.unwrap_or(0.0);
println!("Profit Margin: {:.2}%", profit_margins * 100.0);
}
if let Some(stats) = ticker.key_stats().await? {
let eps = stats
.trailing_eps
.as_ref()
.and_then(|v| v.raw)
.unwrap_or(0.0);
println!("EPS: ${:.2}", eps);
}
let profile = ticker.asset_profile().await?;
if let Some(prof) = profile {
println!("Sector: {}", prof.sector.as_deref().unwrap_or("N/A"));
println!("Industry: {}", prof.industry.as_deref().unwrap_or("N/A"));
println!("Website: {}", prof.website.as_deref().unwrap_or("N/A"));
println!(
"Description: {}",
prof.long_business_summary.as_deref().unwrap_or("N/A")
);
}
Ok(())
}