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.
@@ -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 Exception("Status code: " + str(response.status))
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flespi-sdk
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Add your description here
5
5
  Author-email: Sergey Shevchik <sergey.shevchik@gmail.com>
6
6
  Requires-Python: >=3.11
@@ -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=TiEUVZMo-JpU7vPqnMhJJX47-kI6UMrDAlptSSpRzTo,682
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=TxYZpUJfKY3DnlUXzbu2OaY4nlfdA_PkVcW8N5tXNQc,633
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.2.dist-info/METADATA,sha256=Ij9JZs0jpNBmxRDfLLKwCrLJJOraIX_dgLxUZo23t1c,2267
16
- flespi_sdk-0.1.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
17
- flespi_sdk-0.1.2.dist-info/RECORD,,
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,,