# financeapi
This crate provides a simple set of APIs to interface with
[financeapi.net](http://financeapi.net) to retrieve financial data for
stocks, ETFs, mutual funds, etc...
To be able to use this API the user needs to register and get an API key
from [financeapi.net](http://financeapi.net).
Currently only the following modules are available:
- `/v6/finance/quote` (Real time quote data for stocks, ETFs, mutuals funds, etc...)
- `/v6/finance/autocomplete` (Get auto complete stock suggestions)
The crate is using `reqwest` with `async` features. In a blocking /
synchronous context these functions must be called using `block_on` or
equivalent (see example).
# Examples
```rust
// Here goes your API key
let connector = FinanceapiConnector::new("...");
// v6/finance/quote
let quote = tokio::runtime::Builder::new_current_thread()
.enable_all()
.build()
.unwrap()
.block_on(connector.quote("AAPL"))
.unwrap_or_else(|e| panic!("ERROR: {}", e));
println!(
"AAPL ({}) is currently at {} {}",
quote.long_name.unwrap_or_default(),
quote.regular_market_price.unwrap_or_default(),
quote.financial_currency.unwrap_or_default()
);
let symbol = "VWCE";
// v6/finance/autocomplete
let search = tokio::runtime::Builder::new_current_thread()
.enable_all()
.build()
.unwrap()
.block_on(connector.autocomplete(symbol))
.unwrap_or_else(|e| panic!("ERROR: {}", e));
println!("\nFound {} results for {}", search.len(), symbol);
for (i, v) in search.iter().enumerate() {
println!("{}: {} ({})", i, v.symbol, v.name);
}
```