aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/sdk/base/base_client.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/sdk/base/base_client.py')
-rw-r--r--.venv/lib/python3.12/site-packages/sdk/base/base_client.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/sdk/base/base_client.py b/.venv/lib/python3.12/site-packages/sdk/base/base_client.py
new file mode 100644
index 00000000..c8de8c0c
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/sdk/base/base_client.py
@@ -0,0 +1,52 @@
+import os
+from typing import Optional
+
+from shared.abstractions import R2RException
+
+
+class BaseClient:
+ def __init__(
+ self,
+ base_url: str | None = None,
+ timeout: float = 300.0,
+ ):
+ self.base_url = base_url or os.getenv(
+ "R2R_API_BASE", "https://api.sciphi.ai"
+ )
+ self.timeout = timeout
+ self.access_token: Optional[str] = None
+ self._refresh_token: Optional[str] = None
+ self._user_id: Optional[str] = None
+ self.api_key: Optional[str] = os.getenv("R2R_API_KEY", None)
+
+ def _get_auth_header(self) -> dict[str, str]:
+ if self.access_token and self.api_key:
+ raise R2RException(
+ status_code=400,
+ message="Cannot have both access token and api key.",
+ )
+ if self.access_token:
+ return {"Authorization": f"Bearer {self.access_token}"}
+ elif self.api_key:
+ return {"x-api-key": self.api_key}
+ else:
+ return {}
+
+ def _get_full_url(self, endpoint: str, version: str = "v3") -> str:
+ return f"{self.base_url}/{version}/{endpoint}"
+
+ def _prepare_request_args(self, endpoint: str, **kwargs) -> dict:
+ headers = kwargs.pop("headers", {})
+ if (self.access_token or self.api_key) and endpoint not in [
+ "register",
+ "login",
+ "verify_email",
+ ]:
+ headers.update(self._get_auth_header())
+ if (
+ kwargs.get("params", None) == {}
+ or kwargs.get("params", None) is None
+ ):
+ kwargs.pop("params", None)
+
+ return {"headers": headers, **kwargs}