zykrix
Re-added phidata as a normal folder (final fix)
c96b98a
Raw
History Blame Contribute Delete
2.47 kB
from os import getenv
from typing import Optional, Dict
from httpx import Client as HttpxClient, AsyncClient as HttpxAsyncClient, Response
from phi.constants import PHI_API_KEY_ENV_VAR
from phi.cli.settings import phi_cli_settings
from phi.cli.credentials import read_auth_token
from phi.utils.log import logger
class Api:
def __init__(self):
self.headers: Dict[str, str] = {
"user-agent": f"{phi_cli_settings.app_name}/{phi_cli_settings.app_version}",
"Content-Type": "application/json",
}
self._auth_token: Optional[str] = None
self._authenticated_headers = None
@property
def auth_token(self) -> Optional[str]:
if self._auth_token is None:
try:
self._auth_token = read_auth_token()
except Exception as e:
logger.debug(f"Failed to read auth token: {e}")
return self._auth_token
@property
def authenticated_headers(self) -> Dict[str, str]:
if self._authenticated_headers is None:
self._authenticated_headers = self.headers.copy()
token = self.auth_token
if token is not None:
self._authenticated_headers[phi_cli_settings.auth_token_header] = token
phi_api_key = getenv(PHI_API_KEY_ENV_VAR)
if phi_api_key is not None:
self._authenticated_headers["Authorization"] = f"Bearer {phi_api_key}"
return self._authenticated_headers
def Client(self) -> HttpxClient:
return HttpxClient(
base_url=phi_cli_settings.api_url,
headers=self.headers,
timeout=60,
)
def AuthenticatedClient(self) -> HttpxClient:
return HttpxClient(
base_url=phi_cli_settings.api_url,
headers=self.authenticated_headers,
timeout=60,
)
def AsyncClient(self) -> HttpxAsyncClient:
return HttpxAsyncClient(
base_url=phi_cli_settings.api_url,
headers=self.headers,
timeout=60,
)
def AuthenticatedAsyncClient(self) -> HttpxAsyncClient:
return HttpxAsyncClient(
base_url=phi_cli_settings.api_url,
headers=self.authenticated_headers,
timeout=60,
)
api = Api()
def invalid_response(r: Response) -> bool:
"""Returns true if the response is invalid"""
if r.status_code >= 400:
return True
return False