-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdevices.py
More file actions
142 lines (118 loc) · 5.1 KB
/
devices.py
File metadata and controls
142 lines (118 loc) · 5.1 KB
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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,
customer_key: Optional[str] = None,
device_ids: Optional[List[str]] = None,
device_type: Optional[str] = None,
device_types: Optional[List[str]] = None,
limit: Optional[float] = None,
manufacturer: Optional[str] = None,
page_cursor: Optional[str] = None,
search: Optional[str] = None,
space_id: 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 customer_key is not None:
json_payload["customer_key"] = customer_key
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 limit is not None:
json_payload["limit"] = limit
if manufacturer is not None:
json_payload["manufacturer"] = manufacturer
if page_cursor is not None:
json_payload["page_cursor"] = page_cursor
if search is not None:
json_payload["search"] = search
if space_id is not None:
json_payload["space_id"] = space_id
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 report_provider_metadata(self, *, devices: List[Dict[str, Any]]) -> None:
json_payload = {}
if devices is not None:
json_payload["devices"] = devices
self.client.post("/devices/report_provider_metadata", json=json_payload)
return None
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