about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/sdk/base
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/sdk/base
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/sdk/base')
-rw-r--r--.venv/lib/python3.12/site-packages/sdk/base/__init_.py0
-rw-r--r--.venv/lib/python3.12/site-packages/sdk/base/base_client.py52
2 files changed, 52 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/sdk/base/__init_.py b/.venv/lib/python3.12/site-packages/sdk/base/__init_.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/sdk/base/__init_.py
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}