Skip to content

Commit 94168b2

Browse files
committed
feat(mvp): added support for token settings in py sdk
1 parent 3ab8fd4 commit 94168b2

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/rushdb/client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import urllib.request
1212
from typing import Any, Dict, Optional
1313

14+
from .utils.token_prefix import extract_mixed_properties_from_token
1415
from .api.labels import LabelsAPI
1516
from .api.properties import PropertiesAPI
1617
from .api.records import RecordsAPI
@@ -102,6 +103,15 @@ def __init__(self, api_key: str, base_url: Optional[str] = None):
102103
... base_url="https://my-rushdb.company.com/api/v1"
103104
... )
104105
"""
106+
settings, raw_key = extract_mixed_properties_from_token(api_key)
107+
108+
self.server_settings = {
109+
'customDB': settings['customDB'],
110+
'managedDB': settings['managedDB'],
111+
'selfHosted': settings['selfHosted'],
112+
'canceled': settings['canceled'],
113+
'plan_type': settings['planType'],
114+
} if settings else None
105115
self.base_url = (base_url or self.DEFAULT_BASE_URL).rstrip("/")
106116
self.api_key = api_key
107117
self.records = RecordsAPI(self)

src/rushdb/utils/token_prefix.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import re
2+
from typing import Dict, Optional, Tuple
3+
4+
PlanPrefix = {
5+
'initial': 'in',
6+
'extended': 'ex',
7+
'fullFeatured': 'ff',
8+
}
9+
10+
def extract_mixed_properties_from_token(
11+
prefixed_token: str
12+
) -> Tuple[Optional[Dict[str, bool]], str]:
13+
matched = re.match(r'^([a-z]{2})_([01]{4}\d*)_(.+)$', prefixed_token)
14+
if not matched:
15+
return None, prefixed_token
16+
17+
prefix, bits, raw = matched.groups()
18+
plan = next((p for p, plan in PlanPrefix.items() if plan == prefix), None)
19+
if plan is None:
20+
return None, prefixed_token
21+
22+
b_custom, b_managed, b_self, b_canceled = bits[:4]
23+
settings = {
24+
'planType': plan,
25+
'customDB': b_custom == '1',
26+
'managedDB': b_managed == '1',
27+
'selfHosted': b_self == '1',
28+
'canceled': b_canceled== '1',
29+
}
30+
return settings, raw

0 commit comments

Comments
 (0)