Class: YahooFinanceClient::Stock
- Inherits:
-
Object
- Object
- YahooFinanceClient::Stock
- Defined in:
- lib/yahoo_finance_client/stock.rb
Overview
This class provides methods to interact with Yahoo Finance API for stock data.
Constant Summary collapse
- QUOTE_PATH =
"/v7/finance/quote"- CHART_PATH =
"/v8/finance/chart"- SEARCH_PATH =
"/v1/finance/search"- SEARCH_BASE_URL =
"https://query1.finance.yahoo.com"- CACHE_TTL =
300- MAX_RETRIES =
2- BATCH_SIZE =
50- AUTH_ERROR_PATTERNS =
[/invalid cookie/i, /invalid crumb/i, /unauthorized/i].freeze
Class Method Summary collapse
- .get_dividend_history(symbol, range: "2y") ⇒ Object
- .get_quote(symbol) ⇒ Object
- .get_quotes(symbols) ⇒ Object
-
.search(query, count: 10) ⇒ Array<Hash>
Search the Yahoo Finance autocomplete index for matching symbols.
Class Method Details
.get_dividend_history(symbol, range: "2y") ⇒ Object
35 36 37 38 |
# File 'lib/yahoo_finance_client/stock.rb', line 35 def get_dividend_history(symbol, range: "2y") cache_key = "div_history_#{symbol}_#{range}" fetch_from_cache(cache_key) || fetch_and_cache_dividend_history(cache_key, symbol, range) end |
.get_quote(symbol) ⇒ Object
22 23 24 25 |
# File 'lib/yahoo_finance_client/stock.rb', line 22 def get_quote(symbol) cache_key = "quote_#{symbol}" fetch_from_cache(cache_key) || fetch_and_cache(cache_key, symbol) end |
.get_quotes(symbols) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/yahoo_finance_client/stock.rb', line 27 def get_quotes(symbols) return {} if symbols.nil? || symbols.empty? results, uncached = partition_cached(symbols) fetch_uncached_quotes(uncached, results) results end |
.search(query, count: 10) ⇒ Array<Hash>
Search the Yahoo Finance autocomplete index for matching symbols.
45 46 47 48 49 50 51 |
# File 'lib/yahoo_finance_client/stock.rb', line 45 def search(query, count: 10) normalized = query.to_s.strip return [] if normalized.empty? cache_key = "search_#{normalized.downcase}_#{count}" fetch_from_cache(cache_key) || fetch_and_cache_search(cache_key, normalized, count) end |