use crate::constants::screeners::Screener;
pub mod base {
pub const YAHOO_FINANCE_QUERY1: &str = "https://query1.finance.yahoo.com";
pub const YAHOO_FINANCE_QUERY2: &str = "https://query2.finance.yahoo.com";
pub const YAHOO_FC: &str = "https://fc.yahoo.com";
}
pub mod api {
use super::base::*;
pub const CRUMB_QUERY1: &str =
const_format::concatcp!(YAHOO_FINANCE_QUERY1, "/v1/test/getcrumb");
pub fn quote_summary(symbol: &str) -> String {
format!(
"{}/v10/finance/quoteSummary/{}",
YAHOO_FINANCE_QUERY2, symbol
)
}
pub const QUOTES: &str = const_format::concatcp!(YAHOO_FINANCE_QUERY1, "/v7/finance/quote");
pub fn chart(symbol: &str) -> String {
format!("{}/v8/finance/chart/{}", YAHOO_FINANCE_QUERY1, symbol)
}
pub const SEARCH: &str = const_format::concatcp!(YAHOO_FINANCE_QUERY1, "/v1/finance/search");
pub const LOOKUP: &str = const_format::concatcp!(YAHOO_FINANCE_QUERY1, "/v1/finance/lookup");
pub fn financials(symbol: &str) -> String {
format!(
"{}/ws/fundamentals-timeseries/v1/finance/timeseries/{}",
YAHOO_FINANCE_QUERY2, symbol
)
}
pub fn recommendations(symbol: &str) -> String {
format!(
"{}/v6/finance/recommendationsbysymbol/{}",
YAHOO_FINANCE_QUERY2, symbol
)
}
pub fn quote_type(symbol: &str) -> String {
format!("{}/v1/finance/quoteType/{}", YAHOO_FINANCE_QUERY1, symbol)
}
pub fn options(symbol: &str) -> String {
format!("{}/v7/finance/options/{}", YAHOO_FINANCE_QUERY2, symbol)
}
pub const MARKET_TIME: &str =
const_format::concatcp!(YAHOO_FINANCE_QUERY1, "/v6/finance/markettime");
pub const CURRENCIES: &str =
const_format::concatcp!(YAHOO_FINANCE_QUERY2, "/v1/finance/currencies");
pub const MARKET_SUMMARY: &str =
const_format::concatcp!(YAHOO_FINANCE_QUERY2, "/v6/finance/quote/marketSummary");
pub fn trending(region: &str) -> String {
format!("{}/v1/finance/trending/{}", YAHOO_FINANCE_QUERY2, region)
}
pub const SPARK: &str = const_format::concatcp!(YAHOO_FINANCE_QUERY1, "/v7/finance/spark");
}
pub mod builders {
use super::Screener;
use super::base::*;
pub fn screener(screener_type: Screener, count: u32) -> String {
format!(
"{}/v1/finance/screener/predefined/saved?count={}&formatted=true&scrIds={}",
YAHOO_FINANCE_QUERY1,
count,
screener_type.as_scr_id()
)
}
pub fn custom_screener() -> String {
format!(
"{}/v1/finance/screener?formatted=true&useRecordsResponse=true&lang=en-US®ion=US",
YAHOO_FINANCE_QUERY1
)
}
pub fn sector(sector_key: &str) -> String {
format!(
"{}/v1/finance/sectors/{}?formatted=true&withReturns=false&lang=en-US®ion=US",
YAHOO_FINANCE_QUERY1, sector_key
)
}
pub fn industry(industry_key: &str) -> String {
format!(
"{}/v1/finance/industries/{}?formatted=true&withReturns=false&lang=en-US®ion=US",
YAHOO_FINANCE_QUERY1, industry_key
)
}
}