dominus-sdk-python 2.5.2__tar.gz → 2.5.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/PKG-INFO +1 -1
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/__init__.py +1 -1
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/start.py +35 -14
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/PKG-INFO +1 -1
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/pyproject.toml +1 -1
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/README.md +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/config/__init__.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/config/endpoints.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/errors.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/__init__.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/auth.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/cache.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/core.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/crypto.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/__init__.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/admin.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/auth.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/courier.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/db.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/ddl.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/fastapi.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/files.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/health.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/logs.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/open.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/__init__.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/audio_capture.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/oracle_websocket.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/session.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/types.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/vad_gate.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/portal.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/redis.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/secrets.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/secure.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/services/__init__.py +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/SOURCES.txt +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/dependency_links.txt +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/requires.txt +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/top_level.txt +0 -0
- {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/setup.cfg +0 -0
|
@@ -977,36 +977,57 @@ class Dominus:
|
|
|
977
977
|
system=system
|
|
978
978
|
)
|
|
979
979
|
|
|
980
|
-
async def get_public_key(self) -> str:
|
|
981
|
-
"""Get Sovereign's
|
|
980
|
+
async def get_public_key(self) -> Dict[str, Any]:
|
|
981
|
+
"""Get Sovereign's JWKS for JWT validation (cached)."""
|
|
982
982
|
if self._public_key_cache:
|
|
983
983
|
return self._public_key_cache
|
|
984
984
|
|
|
985
985
|
result = await self._execute("auth.jwks")
|
|
986
|
-
self._public_key_cache = result
|
|
986
|
+
self._public_key_cache = result
|
|
987
987
|
return self._public_key_cache
|
|
988
988
|
|
|
989
989
|
async def validate_jwt(self, token: str) -> Dict[str, Any]:
|
|
990
990
|
"""
|
|
991
991
|
Validate a JWT and return its claims.
|
|
992
992
|
|
|
993
|
+
Decodes the JWT payload and checks expiration.
|
|
994
|
+
Matches JS SDK behavior (decode + expiration check).
|
|
995
|
+
|
|
993
996
|
Raises ValueError if token is invalid or expired.
|
|
994
997
|
"""
|
|
995
|
-
import
|
|
998
|
+
import base64
|
|
999
|
+
import json
|
|
1000
|
+
import time
|
|
1001
|
+
|
|
1002
|
+
# Ensure JWKS is cached for potential future use
|
|
1003
|
+
await self.get_public_key()
|
|
996
1004
|
|
|
997
|
-
|
|
1005
|
+
# Decode JWT without cryptographic verification (matches JS SDK)
|
|
1006
|
+
parts = token.split('.')
|
|
1007
|
+
if len(parts) != 3:
|
|
1008
|
+
raise ValueError("Invalid JWT format")
|
|
998
1009
|
|
|
999
1010
|
try:
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1011
|
+
# Decode payload (base64url)
|
|
1012
|
+
payload_b64 = parts[1]
|
|
1013
|
+
# Add padding if needed
|
|
1014
|
+
padding = 4 - len(payload_b64) % 4
|
|
1015
|
+
if padding != 4:
|
|
1016
|
+
payload_b64 += '=' * padding
|
|
1017
|
+
# Replace URL-safe characters
|
|
1018
|
+
payload_b64 = payload_b64.replace('-', '+').replace('_', '/')
|
|
1019
|
+
payload_bytes = base64.b64decode(payload_b64)
|
|
1020
|
+
claims = json.loads(payload_bytes.decode('utf-8'))
|
|
1021
|
+
|
|
1022
|
+
# Check expiration
|
|
1023
|
+
exp = claims.get("exp")
|
|
1024
|
+
if exp and exp < int(time.time()):
|
|
1025
|
+
raise ValueError("Token has expired")
|
|
1026
|
+
|
|
1006
1027
|
return claims
|
|
1007
|
-
except
|
|
1008
|
-
raise
|
|
1009
|
-
except
|
|
1028
|
+
except ValueError:
|
|
1029
|
+
raise
|
|
1030
|
+
except Exception as e:
|
|
1010
1031
|
raise ValueError(f"Invalid token: {e}")
|
|
1011
1032
|
|
|
1012
1033
|
# ========================================
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/audio_capture.py
RENAMED
|
File without changes
|
{dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/oracle_websocket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/requires.txt
RENAMED
|
File without changes
|
{dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|