use finance_query_core::{FetchClient, YahooAuthManager, YahooFinanceClient};
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("🚀 Testing finance-query-core with real Yahoo Finance data...\n");
let fetch_client = Arc::new(FetchClient::new(None)?);
let cookie_jar = fetch_client.cookie_jar().clone();
let auth_manager = Arc::new(YahooAuthManager::new(None, cookie_jar));
let client = YahooFinanceClient::new(auth_manager.clone(), fetch_client.clone());
println!("📡 Authenticating with Yahoo Finance...");
auth_manager.refresh().await?;
println!("✅ Authentication successful!\n");
println!("📈 Fetching AAPL quote...");
let quote = client.get_quote("AAPL").await?;
println!("Raw response:\n{}\n", serde_json::to_string_pretty("e)?);
println!("📊 Fetching simple quotes for AAPL, GOOGL, MSFT...");
let symbols = vec!["AAPL", "GOOGL", "MSFT"];
let quotes = client.get_simple_quotes(&symbols).await?;
println!("Simple quotes response:\n{}\n", serde_json::to_string_pretty("es)?);
println!("🔍 Searching for 'Tesla'...");
let search_results = client.search("Tesla", 5).await?;
println!("Search results:\n{}\n", serde_json::to_string_pretty(&search_results)?);
println!("📉 Fetching 1-month historical data for AAPL...");
let chart = client.get_chart("AAPL", "1d", "1mo").await?;
println!("Chart data (first 500 chars):\n{}...\n",
serde_json::to_string_pretty(&chart)?
.chars()
.take(500)
.collect::<String>()
);
println!("✅ All tests passed! The crate is working correctly.");
Ok(())
}