flespi-sdk 0.1.2__py3-none-any.whl → 0.1.3__py3-none-any.whl
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.
- flespi_sdk/exception.py +15 -0
- flespi_sdk/modules/flespi_session.py +5 -1
- flespi_sdk/modules/realms/realm.py +7 -0
- flespi_sdk/modules/realms/realm_home.py +50 -0
- flespi_sdk/modules/realms/realm_token_params.py +82 -0
- {flespi_sdk-0.1.2.dist-info → flespi_sdk-0.1.3.dist-info}/METADATA +1 -1
- {flespi_sdk-0.1.2.dist-info → flespi_sdk-0.1.3.dist-info}/RECORD +8 -5
- {flespi_sdk-0.1.2.dist-info → flespi_sdk-0.1.3.dist-info}/WHEEL +0 -0
flespi_sdk/exception.py
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
from dataclasses import dataclass
|
2
|
+
|
3
|
+
|
4
|
+
@dataclass
|
5
|
+
class FlespiError:
|
6
|
+
code: int
|
7
|
+
reason: str
|
8
|
+
id: int | None = None
|
9
|
+
selector: str | None = None
|
10
|
+
|
11
|
+
|
12
|
+
class FlespiException(Exception):
|
13
|
+
def __init__(self, status_code: int, errors: list[dict]):
|
14
|
+
self.status_code = status_code
|
15
|
+
self.errors = [FlespiError(**error) for error in errors]
|
@@ -1,5 +1,7 @@
|
|
1
1
|
from aiohttp import ClientSession
|
2
2
|
|
3
|
+
from flespi_sdk.exception import FlespiException
|
4
|
+
|
3
5
|
|
4
6
|
class FlespiSession:
|
5
7
|
def __init__(self, session: ClientSession, cid: int | None = None):
|
@@ -16,7 +18,9 @@ class FlespiSession:
|
|
16
18
|
|
17
19
|
async def get_result(self, response):
|
18
20
|
if response.status != 200:
|
19
|
-
raise
|
21
|
+
raise FlespiException(
|
22
|
+
status_code=response.status, errors=(await response.json())["errors"]
|
23
|
+
)
|
20
24
|
response_json = await response.json()
|
21
25
|
result = response_json["result"]
|
22
26
|
return result
|
@@ -1,5 +1,7 @@
|
|
1
1
|
from aiohttp import ClientSession
|
2
2
|
|
3
|
+
from flespi_sdk.modules.realms.realm_home import RealmHome
|
4
|
+
from flespi_sdk.modules.realms.realm_token_params import RealmTokenParams
|
3
5
|
from flespi_sdk.modules.realms.users import Users
|
4
6
|
from flespi_sdk.modules.item_with_metadata import ItemWithMetadata
|
5
7
|
|
@@ -19,3 +21,8 @@ class Realm(ItemWithMetadata):
|
|
19
21
|
client_session=session,
|
20
22
|
cid=cid,
|
21
23
|
)
|
24
|
+
|
25
|
+
self.home = RealmHome(realm_id=realm_id, session=session, cid=cid)
|
26
|
+
self.token_params = RealmTokenParams(
|
27
|
+
realm_id=realm_id, session=session, cid=cid
|
28
|
+
)
|
@@ -0,0 +1,50 @@
|
|
1
|
+
from aiohttp import ClientSession
|
2
|
+
from flespi_sdk.modules.flespi_session import FlespiSession
|
3
|
+
|
4
|
+
|
5
|
+
class RealmHome(FlespiSession):
|
6
|
+
def __init__(
|
7
|
+
self,
|
8
|
+
realm_id: int,
|
9
|
+
session: ClientSession,
|
10
|
+
cid: int | None = None,
|
11
|
+
):
|
12
|
+
super().__init__(session, cid)
|
13
|
+
self.realm_id = realm_id
|
14
|
+
|
15
|
+
async def get(self):
|
16
|
+
params = {"fields": "home"}
|
17
|
+
async with self.session.get(
|
18
|
+
f"/platform/realms/{self.realm_id}",
|
19
|
+
params=params,
|
20
|
+
headers=self.get_headers(),
|
21
|
+
) as response:
|
22
|
+
result = await self.get_result(response)
|
23
|
+
return result[0]["home"]
|
24
|
+
|
25
|
+
async def set(self, data: dict):
|
26
|
+
response = await self.session.put(
|
27
|
+
f"/platform/realms/{self.realm_id}",
|
28
|
+
json={"home": data},
|
29
|
+
headers=self.get_headers(),
|
30
|
+
)
|
31
|
+
return await self.get_result(response)
|
32
|
+
|
33
|
+
async def set_current_subaccount(self):
|
34
|
+
data = {"type": 0}
|
35
|
+
await self.set(data)
|
36
|
+
|
37
|
+
async def set_existing_subaccount(self, subaccount_id: int):
|
38
|
+
data = {"type": 1, "subaccount_id": subaccount_id}
|
39
|
+
await self.set(data)
|
40
|
+
|
41
|
+
async def set_create_new_subaccount(
|
42
|
+
self, subaccount_id: int | None = None, limit_id: int | None = None
|
43
|
+
):
|
44
|
+
data = {"type": 2}
|
45
|
+
if subaccount_id:
|
46
|
+
data["subaccount_id"] = subaccount_id
|
47
|
+
if limit_id:
|
48
|
+
data["limit_id"] = limit_id
|
49
|
+
|
50
|
+
await self.set(data)
|
@@ -0,0 +1,82 @@
|
|
1
|
+
from aiohttp import ClientSession
|
2
|
+
|
3
|
+
from flespi_sdk.modules.flespi_session import FlespiSession
|
4
|
+
|
5
|
+
|
6
|
+
class RealmTokenParams(FlespiSession):
|
7
|
+
def __init__(self, realm_id: int, session: ClientSession, cid: int | None = None):
|
8
|
+
super().__init__(session, cid)
|
9
|
+
self.realm_id = realm_id
|
10
|
+
|
11
|
+
async def get(self):
|
12
|
+
params = {"fields": "token_params"}
|
13
|
+
async with self.session.get(
|
14
|
+
f"platform/realms/{self.realm_id}",
|
15
|
+
params=params,
|
16
|
+
headers=self.get_headers(),
|
17
|
+
) as response:
|
18
|
+
return (await self.get_result(response))[0]["token_params"]
|
19
|
+
|
20
|
+
async def set(self, data: dict):
|
21
|
+
response = await self.session.put(
|
22
|
+
f"platform/realms/{self.realm_id}",
|
23
|
+
json={"token_params": data},
|
24
|
+
headers=self.get_headers(),
|
25
|
+
)
|
26
|
+
return await self.get_result(response)
|
27
|
+
|
28
|
+
async def set_ttl(self, seconds: int):
|
29
|
+
token_params = await self.get()
|
30
|
+
if token_params["ttl"] == seconds:
|
31
|
+
return
|
32
|
+
token_params["ttl"] = seconds
|
33
|
+
await self.set(token_params)
|
34
|
+
|
35
|
+
async def set_ip_addresses(self, ip_addresses: list[str]):
|
36
|
+
token_params = await self.get()
|
37
|
+
ip_addresses_csv = ",".join(ip_addresses)
|
38
|
+
if "ips" in token_params and token_params["ips"] == ip_addresses_csv:
|
39
|
+
return
|
40
|
+
token_params["ips"] = ip_addresses_csv
|
41
|
+
await self.set(token_params)
|
42
|
+
|
43
|
+
async def allow_all_origins(self):
|
44
|
+
token_params = await self.get()
|
45
|
+
if "origins" in token_params and token_params["origins"] == "*":
|
46
|
+
return
|
47
|
+
token_params["origins"] = "*"
|
48
|
+
await self.set(token_params)
|
49
|
+
|
50
|
+
async def set_origins(self, origins: list[str], allow_flespi_origins: bool = False):
|
51
|
+
token_params = await self.get()
|
52
|
+
token_params["origins"] = origins.copy()
|
53
|
+
if allow_flespi_origins:
|
54
|
+
token_params["origins"].append({"preset": "flespi"})
|
55
|
+
await self.set(token_params)
|
56
|
+
|
57
|
+
async def set_standard_access(self):
|
58
|
+
token_params = await self.get()
|
59
|
+
if token_params["access"]["type"] == 0:
|
60
|
+
return
|
61
|
+
token_params["access"] = {"type": 0}
|
62
|
+
await self.set(token_params)
|
63
|
+
|
64
|
+
async def set_master_access(self):
|
65
|
+
token_params = await self.get()
|
66
|
+
if token_params["access"]["type"] == 1:
|
67
|
+
return
|
68
|
+
token_params["access"] = {"type": 1}
|
69
|
+
await self.set(token_params)
|
70
|
+
|
71
|
+
async def set_acl_access(
|
72
|
+
self, acl: list[dict] = [], templating: bool | None = None
|
73
|
+
):
|
74
|
+
token_params = await self.get()
|
75
|
+
access = {
|
76
|
+
"type": 2,
|
77
|
+
"acl": acl,
|
78
|
+
}
|
79
|
+
if templating is not None:
|
80
|
+
access["templating"] = templating
|
81
|
+
token_params["access"] = access
|
82
|
+
await self.set(token_params)
|
@@ -1,17 +1,20 @@
|
|
1
1
|
flespi_sdk/__init__.py,sha256=INx-TmKYpKi9SC0-UMqtqKwnMnHK88oXyvh3tTFY668,1462
|
2
2
|
flespi_sdk/account.py,sha256=tu4JX4Qh8Sf25BbX4RMvXjWs5DJg2W_LeasaBSYzAzo,2774
|
3
3
|
flespi_sdk/cli.py,sha256=6OcRQAu-LLFTYGGY_S0SNTXgHlazr3NaMDqPQ7QLg_E,1346
|
4
|
+
flespi_sdk/exception.py,sha256=cffPxxMtUCyPO121XBzSzQ2yxUlJ75e18YaD3ikBZlg,356
|
4
5
|
flespi_sdk/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
flespi_sdk/modules/flespi_session.py,sha256=
|
6
|
+
flespi_sdk/modules/flespi_session.py,sha256=TdYYfLaXpU4eeKODNCtUYvm0-1Ka5V32MRHc7bojUqo,799
|
6
7
|
flespi_sdk/modules/item_with_metadata.py,sha256=_J1dvU_aFg6yTeiKFuQPNMFEZnFkP5Li6NePXpyqRzY,906
|
7
8
|
flespi_sdk/modules/items_container.py,sha256=5c8ov35NQ8dVmDGpq68ROaVIj8VtySaE0Rlrk0JUsLc,1440
|
8
9
|
flespi_sdk/modules/metadata/__init__.py,sha256=3-FNhSeWFQIlUZH8jnCAVbiJvQI7emAz3I8LRB92VPU,2792
|
9
10
|
flespi_sdk/modules/mqtt/__init__.py,sha256=nLUQxrNpJ2E8l-OGyOAE-dfyOpQ4_-bjC-fkUEj_8As,2714
|
10
11
|
flespi_sdk/modules/realms/__init__.py,sha256=U3nT0Zwz7Y6knmEsL3jDqxwRntM3GgmMqJUERCJJsTs,1063
|
11
|
-
flespi_sdk/modules/realms/realm.py,sha256=
|
12
|
+
flespi_sdk/modules/realms/realm.py,sha256=cXhEnfzSiV1ZMJWTYqG90Whon0-qUYmZ_rEf_xPc7Mw,954
|
13
|
+
flespi_sdk/modules/realms/realm_home.py,sha256=WICjpFfNqW35iZYzLeWgPgg39ZdBwlI2SUClBWvgxEk,1488
|
14
|
+
flespi_sdk/modules/realms/realm_token_params.py,sha256=dCQUAdDtzKoYbvSAatJsAdxomM267sZYC2BuE_O90w8,2835
|
12
15
|
flespi_sdk/modules/realms/users/__init__.py,sha256=hHv5R_eySJ_ioQIfYjYHbnbcMm1NhSKBKBpsNILHfbE,1798
|
13
16
|
flespi_sdk/modules/realms/users/user.py,sha256=Y6Z3WZuzyl9-IOvKl4_OkBXBT2nIiq8L_dWF6MhD-IY,1249
|
14
17
|
flespi_sdk/modules/subaccounts/__init__.py,sha256=PhS91e9FoV3m6VkfrANoq0_Zf-v139VsShGBXoPaJ-I,1044
|
15
|
-
flespi_sdk-0.1.
|
16
|
-
flespi_sdk-0.1.
|
17
|
-
flespi_sdk-0.1.
|
18
|
+
flespi_sdk-0.1.3.dist-info/METADATA,sha256=7chNQ96JQ9T-WiFPWa9QJ5VmU1A_JCX1IGxamif0H1M,2267
|
19
|
+
flespi_sdk-0.1.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
20
|
+
flespi_sdk-0.1.3.dist-info/RECORD,,
|
File without changes
|