-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdevices.py
126 lines (106 loc) · 4.59 KB
/
devices.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
from typing import Optional, Any, List, Dict, Union
from ..client import SeamHttpClient
from .models import AbstractDevices, Device, DeviceProvider
from .devices_simulate import DevicesSimulate
from .devices_unmanaged import DevicesUnmanaged
class Devices(AbstractDevices):
def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]):
self.client = client
self.defaults = defaults
self._simulate = DevicesSimulate(client=client, defaults=defaults)
self._unmanaged = DevicesUnmanaged(client=client, defaults=defaults)
@property
def simulate(self) -> DevicesSimulate:
return self._simulate
@property
def unmanaged(self) -> DevicesUnmanaged:
return self._unmanaged
def get(
self, *, device_id: Optional[str] = None, name: Optional[str] = None
) -> Device:
json_payload = {}
if device_id is not None:
json_payload["device_id"] = device_id
if name is not None:
json_payload["name"] = name
res = self.client.post("/devices/get", json=json_payload)
return Device.from_dict(res["device"])
def list(
self,
*,
connect_webview_id: Optional[str] = None,
connected_account_id: Optional[str] = None,
connected_account_ids: Optional[List[str]] = None,
created_before: Optional[str] = None,
custom_metadata_has: Optional[Dict[str, Any]] = None,
device_ids: Optional[List[str]] = None,
device_type: Optional[str] = None,
device_types: Optional[List[str]] = None,
exclude_if: Optional[List[str]] = None,
include_if: Optional[List[str]] = None,
limit: Optional[float] = None,
manufacturer: Optional[str] = None,
unstable_location_id: Optional[str] = None,
user_identifier_key: Optional[str] = None
) -> List[Device]:
json_payload = {}
if connect_webview_id is not None:
json_payload["connect_webview_id"] = connect_webview_id
if connected_account_id is not None:
json_payload["connected_account_id"] = connected_account_id
if connected_account_ids is not None:
json_payload["connected_account_ids"] = connected_account_ids
if created_before is not None:
json_payload["created_before"] = created_before
if custom_metadata_has is not None:
json_payload["custom_metadata_has"] = custom_metadata_has
if device_ids is not None:
json_payload["device_ids"] = device_ids
if device_type is not None:
json_payload["device_type"] = device_type
if device_types is not None:
json_payload["device_types"] = device_types
if exclude_if is not None:
json_payload["exclude_if"] = exclude_if
if include_if is not None:
json_payload["include_if"] = include_if
if limit is not None:
json_payload["limit"] = limit
if manufacturer is not None:
json_payload["manufacturer"] = manufacturer
if unstable_location_id is not None:
json_payload["unstable_location_id"] = unstable_location_id
if user_identifier_key is not None:
json_payload["user_identifier_key"] = user_identifier_key
res = self.client.post("/devices/list", json=json_payload)
return [Device.from_dict(item) for item in res["devices"]]
def list_device_providers(
self, *, provider_category: Optional[str] = None
) -> List[DeviceProvider]:
json_payload = {}
if provider_category is not None:
json_payload["provider_category"] = provider_category
res = self.client.post("/devices/list_device_providers", json=json_payload)
return [DeviceProvider.from_dict(item) for item in res["device_providers"]]
def update(
self,
*,
device_id: str,
custom_metadata: Optional[Dict[str, Any]] = None,
is_managed: Optional[bool] = None,
name: Optional[str] = None,
properties: Optional[Dict[str, Any]] = None
) -> None:
json_payload = {}
if device_id is not None:
json_payload["device_id"] = device_id
if custom_metadata is not None:
json_payload["custom_metadata"] = custom_metadata
if is_managed is not None:
json_payload["is_managed"] = is_managed
if name is not None:
json_payload["name"] = name
if properties is not None:
json_payload["properties"] = properties
self.client.post("/devices/update", json=json_payload)
return None