in src/backend/domain/data_providers/alpha_vantage.py [0:0]
def get_earnings(self, symbol: str, start_date: str, end_date: str) -> Dict[str, Any]:
start_date = start_date.split()[0]
end_date = end_date.split()[0]
earnings_url = self.ALPHAVANTAGE_EARNINGS_URL_TEMPLATE.substitute(symbol=symbol, api_key=self.api_key)
result = json.loads(requests.get(earnings_url).content.decode())
if "Error Message" in result:
raise DataNotFoundError(
f"Data provider failed on fetch for following symbol\: {symbol}\nWith following message\: {result['Error Message']}"
)
if not result:
return {
"meta": {
"symbol": symbol,
"name": "",
"currency": "USD",
"exchange": "",
"mic_code": "",
"exchange_timezone": "",
},
"earnings": [],
}
quarterly = result["quarterlyEarnings"]
tmp_quarterly = {item["reportedDate"]: item for item in quarterly}
start_date_entry, end_date_entry = self.get_time_border_data(tmp_quarterly, start_date, end_date)
quarterly.reverse()
start_index = result["quarterlyEarnings"].index(start_date_entry[1])
end_index = result["quarterlyEarnings"].index(end_date_entry[1]) + 1
quarterly = quarterly[start_index:end_index]
converted_earnings = self.convert_earnings(symbol, quarterly)
return converted_earnings