1.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.7 KiB
		
	
	
	
	
	
	
	
OpenData Project Hints
Stocks Module
Overview
The stocks module provides real-time stock price data through various provider implementations. Currently supports Yahoo Finance with an extensible architecture for additional providers.
Architecture
- Provider Pattern: Each stock data source implements the 
IStockProviderinterface - Service Registry: 
StockPriceServicemanages providers with priority-based selection - Caching: Built-in cache with configurable TTL to reduce API calls
 - Fallback Logic: Automatic failover between providers if one fails
 
Yahoo Finance Provider Notes
- Uses public API endpoints (no authentication required)
 - Two main endpoints:
/v8/finance/chart/{ticker}- Single ticker with full data/v8/finance/spark?symbols={tickers}- Multiple tickers with basic data
 - Response data is in 
response.bodywhen using smartrequest - Requires User-Agent header to avoid rate limiting
 
Usage Example
import { StockPriceService, YahooFinanceProvider } from '@fin.cx/opendata';
const stockService = new StockPriceService({ ttl: 60000 });
const yahooProvider = new YahooFinanceProvider();
stockService.register(yahooProvider);
const price = await stockService.getPrice({ ticker: 'AAPL' });
console.log(`${price.ticker}: $${price.price}`);
Testing
- Tests use real API calls (be mindful of rate limits)
 - Mock invalid ticker 'INVALID_TICKER_XYZ' for error testing
 - Clear cache between tests to ensure fresh data
 - The spark endpoint may return fewer results than requested
 
Future Providers
To add a new provider:
- Create 
ts/stocks/providers/provider.{name}.ts - Implement the 
IStockProviderinterface - Register with 
StockPriceService - No changes needed to existing code