You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
"""Company info Oracle service methods."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from libs.oracle_client.client import OracleClient
|
|
from libs.oracle_client.models import CompanyInfo
|
|
|
|
|
|
class CompanyService:
|
|
def __init__(self, client: OracleClient) -> None:
|
|
self._client = client
|
|
|
|
async def get_company(self, symbol: str) -> CompanyInfo:
|
|
"""Fetch company info via GET /api/v1/company/{symbol}.
|
|
|
|
The newer company endpoint returns the company payload directly.
|
|
Older Oracle deployments may still only expose the `financial/data`
|
|
wrapper shape, so accept either structure for compatibility.
|
|
"""
|
|
data = await self._client.get(f"/api/v1/company/{symbol}")
|
|
company = data.get("company", data)
|
|
return CompanyInfo(
|
|
ticker=company.get("ticker", symbol),
|
|
name=company.get("name"),
|
|
cik=company.get("cik"),
|
|
exchange=company.get("exchange"),
|
|
sector=company.get("sector"),
|
|
industry=company.get("industry"),
|
|
country=company.get("country"),
|
|
market_cap=company.get("market_cap"),
|
|
)
|