python-aidot 0.2.3__tar.gz → 0.2.5__tar.gz
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.
- {python_aidot-0.2.3/python_aidot.egg-info → python_aidot-0.2.5}/PKG-INFO +1 -1
- python_aidot-0.2.5/aidot/client.py +166 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/aidot/const.py +3 -0
- python_aidot-0.2.5/aidot/exceptions.py +18 -0
- python_aidot-0.2.5/aidot/login_const.py +14 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5/python_aidot.egg-info}/PKG-INFO +1 -1
- {python_aidot-0.2.3 → python_aidot-0.2.5}/python_aidot.egg-info/SOURCES.txt +2 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/setup.py +1 -1
- python_aidot-0.2.3/aidot/login_const.py +0 -197
- {python_aidot-0.2.3 → python_aidot-0.2.5}/LICENSE +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/README.md +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/aidot/__init__.py +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/aidot/aes_utils.py +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/aidot/discover.py +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/aidot/lan.py +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/aidot/login_control.py +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/aidot/login_data.py +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/python_aidot.egg-info/dependency_links.txt +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/python_aidot.egg-info/requires.txt +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/python_aidot.egg-info/top_level.txt +0 -0
- {python_aidot-0.2.3 → python_aidot-0.2.5}/setup.cfg +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"""The aidot integration."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from typing import Any, Optional
|
|
5
|
+
from aiohttp import ClientResponseError, ClientSession
|
|
6
|
+
import base64
|
|
7
|
+
import aiohttp
|
|
8
|
+
from cryptography.hazmat.backends import default_backend
|
|
9
|
+
from cryptography.hazmat.primitives import serialization
|
|
10
|
+
from cryptography.hazmat.primitives.asymmetric import padding
|
|
11
|
+
|
|
12
|
+
from .login_const import APP_ID, PUBLIC_KEY_PEM, BASE_URL
|
|
13
|
+
from .const import (
|
|
14
|
+
SUPPORTED_COUNTRYS,
|
|
15
|
+
DEFAULT_COUNTRY_NAME,
|
|
16
|
+
CONF_PRODUCT_ID,
|
|
17
|
+
CONF_ID,
|
|
18
|
+
CONF_PRODUCT,
|
|
19
|
+
CONF_ACCESS_TOKEN,
|
|
20
|
+
CONF_REFRESH_TOKEN,
|
|
21
|
+
CONF_TERMINAL,
|
|
22
|
+
CONF_APP_ID,
|
|
23
|
+
)
|
|
24
|
+
from .exceptions import AidotAuthFailed
|
|
25
|
+
|
|
26
|
+
_LOGGER = logging.getLogger(__name__)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def rsa_password_encrypt(message: str):
|
|
30
|
+
"""Get password rsa encrypt."""
|
|
31
|
+
public_key = serialization.load_pem_public_key(
|
|
32
|
+
PUBLIC_KEY_PEM, backend=default_backend()
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
encrypted = public_key.encrypt(
|
|
36
|
+
message.encode("utf-8"),
|
|
37
|
+
padding.PKCS1v15(),
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
encrypted_base64 = base64.b64encode(encrypted).decode("utf-8")
|
|
41
|
+
return encrypted_base64
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class AidotClient:
|
|
45
|
+
_base_url: str = BASE_URL
|
|
46
|
+
_region: str = "us"
|
|
47
|
+
session: Optional[ClientSession] = None
|
|
48
|
+
username: str = ""
|
|
49
|
+
password: str = ""
|
|
50
|
+
country_name: str = DEFAULT_COUNTRY_NAME
|
|
51
|
+
login_info: dict[str, Any] = {}
|
|
52
|
+
|
|
53
|
+
def __init__(
|
|
54
|
+
self,
|
|
55
|
+
country_name: str | None = None,
|
|
56
|
+
username: str | None = None,
|
|
57
|
+
password: str | None = None,
|
|
58
|
+
token: dict | None = None,
|
|
59
|
+
) -> None:
|
|
60
|
+
self.country_name = country_name
|
|
61
|
+
self.username = username
|
|
62
|
+
self.password = password
|
|
63
|
+
self.login_info = token
|
|
64
|
+
for item in SUPPORTED_COUNTRYS:
|
|
65
|
+
if item["name"] == self.country_name:
|
|
66
|
+
self._region = item["region"].lower()
|
|
67
|
+
self._base_url = f"https://prod-{self._region}-api.arnoo.com/v17"
|
|
68
|
+
break
|
|
69
|
+
|
|
70
|
+
def get_identifier(self) -> str:
|
|
71
|
+
return f"{self.username}-{self.password}-{self._region}"
|
|
72
|
+
|
|
73
|
+
async def async_post_login(self):
|
|
74
|
+
"""Login the user input allows us to connect."""
|
|
75
|
+
url = f"{self._base_url}/users/loginWithFreeVerification"
|
|
76
|
+
headers = {CONF_APP_ID: APP_ID, CONF_TERMINAL: "app"}
|
|
77
|
+
data = {
|
|
78
|
+
"countryKey": "region:UnitedStates",
|
|
79
|
+
"username": self.username,
|
|
80
|
+
"password": rsa_password_encrypt(self.password),
|
|
81
|
+
"terminalId": "gvz3gjae10l4zii00t7y0",
|
|
82
|
+
"webVersion": "0.5.0",
|
|
83
|
+
"area": "Asia/Shanghai",
|
|
84
|
+
"UTC": "UTC+8",
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
try:
|
|
88
|
+
async with self.session.post(url, headers=headers, json=data) as response:
|
|
89
|
+
response.raise_for_status()
|
|
90
|
+
self.login_info = await response.json()
|
|
91
|
+
return self.login_info
|
|
92
|
+
except aiohttp.ClientError as e:
|
|
93
|
+
_LOGGER.info("async_post_login ClientError {e}")
|
|
94
|
+
return None
|
|
95
|
+
|
|
96
|
+
async def async_refresh_token(self):
|
|
97
|
+
url = f"{self._base_url}/users/refreshToken"
|
|
98
|
+
headers = {CONF_APP_ID: APP_ID, CONF_TERMINAL: "app"}
|
|
99
|
+
data = {
|
|
100
|
+
CONF_REFRESH_TOKEN: self.login_info[CONF_REFRESH_TOKEN],
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
try:
|
|
104
|
+
async with self.session.post(url, headers=headers, json=data) as response:
|
|
105
|
+
response.raise_for_status()
|
|
106
|
+
data = await response.json()
|
|
107
|
+
self.login_info[CONF_ACCESS_TOKEN] = data[CONF_ACCESS_TOKEN]
|
|
108
|
+
return data
|
|
109
|
+
except aiohttp.ClientError as e:
|
|
110
|
+
_LOGGER.info("async_post_login ClientError {e}")
|
|
111
|
+
return None
|
|
112
|
+
|
|
113
|
+
async def async_session_get(self, params: str, headers: str | None = None):
|
|
114
|
+
url = f"{self._base_url}{params}"
|
|
115
|
+
token = self.login_info[CONF_ACCESS_TOKEN]
|
|
116
|
+
if token is None:
|
|
117
|
+
raise AidotAuthFailed()
|
|
118
|
+
if headers is None:
|
|
119
|
+
headers = {
|
|
120
|
+
CONF_TERMINAL: "app",
|
|
121
|
+
"Token": token,
|
|
122
|
+
CONF_APP_ID: APP_ID,
|
|
123
|
+
}
|
|
124
|
+
try:
|
|
125
|
+
async with self.session.get(url, headers=headers) as response:
|
|
126
|
+
response.raise_for_status()
|
|
127
|
+
response_data = await response.json()
|
|
128
|
+
return response_data
|
|
129
|
+
except aiohttp.ClientError as e:
|
|
130
|
+
_LOGGER.info("async_get_products ClientError {e}")
|
|
131
|
+
return None
|
|
132
|
+
|
|
133
|
+
async def async_get_products(self, product_ids: str):
|
|
134
|
+
"""Get device list."""
|
|
135
|
+
params = f"/products/{product_ids}"
|
|
136
|
+
return await self.async_session_get(params)
|
|
137
|
+
|
|
138
|
+
async def async_get_devices(self, house_id: str):
|
|
139
|
+
"""Get device list."""
|
|
140
|
+
params = f"/devices?houseId={house_id}"
|
|
141
|
+
return await self.async_session_get(params)
|
|
142
|
+
|
|
143
|
+
async def async_get_houses(self, token: str):
|
|
144
|
+
"""Get house list."""
|
|
145
|
+
params = "/houses"
|
|
146
|
+
return await self.async_session_get(params)
|
|
147
|
+
|
|
148
|
+
async def async_get_all_device(self):
|
|
149
|
+
# get houses
|
|
150
|
+
houses = await self.async_get_houses()
|
|
151
|
+
final_device_list: list[dict[str, Any]] = []
|
|
152
|
+
for house in houses:
|
|
153
|
+
# get device_list
|
|
154
|
+
device_list = await self.async_get_devices(house[CONF_ID])
|
|
155
|
+
if device_list:
|
|
156
|
+
final_device_list.extend(device_list)
|
|
157
|
+
|
|
158
|
+
# get product_list
|
|
159
|
+
productIds = ",".join([item[CONF_PRODUCT_ID] for item in device_list])
|
|
160
|
+
product_list = await self.async_get_products(productIds)
|
|
161
|
+
|
|
162
|
+
for product in product_list:
|
|
163
|
+
for device in final_device_list:
|
|
164
|
+
if device[CONF_PRODUCT_ID] == product[CONF_ID]:
|
|
165
|
+
device[CONF_PRODUCT] = product
|
|
166
|
+
return final_device_list
|
|
@@ -163,11 +163,14 @@ SUPPORTED_COUNTRYS = [
|
|
|
163
163
|
|
|
164
164
|
SUPPORTED_COUNTRY_NAMES = [item["name"] for item in SUPPORTED_COUNTRYS]
|
|
165
165
|
DEFAULT_COUNTRY_NAME = "United States"
|
|
166
|
+
CONF_APP_ID = "Appid"
|
|
167
|
+
CONF_TERMINAL = "Terminal"
|
|
166
168
|
CONF_LOGIN_RESPONSE = "login_response"
|
|
167
169
|
CONF_SELECTED_HOUSE = "selected_house"
|
|
168
170
|
CONF_DEVICE_LIST = "device_list"
|
|
169
171
|
CONF_PRODUCT_LIST = "product_list"
|
|
170
172
|
CONF_ACCESS_TOKEN = "accessToken"
|
|
173
|
+
CONF_REFRESH_TOKEN = "refreshToken"
|
|
171
174
|
CONF_ID = "id"
|
|
172
175
|
CONF_NAME = "name"
|
|
173
176
|
CONF_PRODUCT_ID = "productId"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""aidot Exceptions."""
|
|
2
|
+
class AidotError(Exception):
|
|
3
|
+
"""Aidot api exception."""
|
|
4
|
+
|
|
5
|
+
class InvalidURL(AidotError):
|
|
6
|
+
"""Invalid url exception."""
|
|
7
|
+
|
|
8
|
+
class HTTPError(AidotError):
|
|
9
|
+
"""Invalid host exception."""
|
|
10
|
+
|
|
11
|
+
class InvalidHost(AidotError):
|
|
12
|
+
"""Invalid host exception."""
|
|
13
|
+
|
|
14
|
+
class AidotAuthTokenExpired(AidotError):
|
|
15
|
+
"""Authentication failed because token is invalid or expired."""
|
|
16
|
+
|
|
17
|
+
class AidotAuthVerificationCode(AidotError):
|
|
18
|
+
"""Authentication failed because MFA verification code is required."""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""Constants for the aidot integration."""
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
APP_ID = "1383974540041977857"
|
|
5
|
+
BASE_URL = "https://prod-us-api.arnoo.com/v17"
|
|
6
|
+
|
|
7
|
+
PUBLIC_KEY_PEM = b"""
|
|
8
|
+
-----BEGIN PUBLIC KEY-----
|
|
9
|
+
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtQAnPCi8ksPnS1Du6z96PsKfN
|
|
10
|
+
p2Gp/f/bHwlrAdplbX3p7/TnGpnbJGkLq8uRxf6cw+vOthTsZjkPCF7CatRvRnTj
|
|
11
|
+
c9fcy7yE0oXa5TloYyXD6GkxgftBbN/movkJJGQCc7gFavuYoAdTRBOyQoXBtm0m
|
|
12
|
+
kXMSjXOldI/290b9BQIDAQAB
|
|
13
|
+
-----END PUBLIC KEY-----
|
|
14
|
+
"""
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
"""Constants for the aidot integration."""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
APP_ID = "1383974540041977857"
|
|
5
|
-
BASE_URL = "https://prod-us-api.arnoo.com/v17"
|
|
6
|
-
|
|
7
|
-
PUBLIC_KEY_PEM = b"""
|
|
8
|
-
-----BEGIN PUBLIC KEY-----
|
|
9
|
-
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtQAnPCi8ksPnS1Du6z96PsKfN
|
|
10
|
-
p2Gp/f/bHwlrAdplbX3p7/TnGpnbJGkLq8uRxf6cw+vOthTsZjkPCF7CatRvRnTj
|
|
11
|
-
c9fcy7yE0oXa5TloYyXD6GkxgftBbN/movkJJGQCc7gFavuYoAdTRBOyQoXBtm0m
|
|
12
|
-
kXMSjXOldI/290b9BQIDAQAB
|
|
13
|
-
-----END PUBLIC KEY-----
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
SUPPORTED_COUNTRYS = [
|
|
18
|
-
{"_id": "1-0", "id": "AL", "name": "Albania", "ext": "", "region": "EU"},
|
|
19
|
-
{
|
|
20
|
-
"_id": "1-1",
|
|
21
|
-
"id": "AG",
|
|
22
|
-
"name": "Antigua and Barbuda",
|
|
23
|
-
"ext": "",
|
|
24
|
-
"region": "US",
|
|
25
|
-
},
|
|
26
|
-
{"_id": "1-2", "id": "AR", "name": "Argentina", "ext": "", "region": "US"},
|
|
27
|
-
{"_id": "1-3", "id": "AT", "name": "Austria", "ext": "", "region": "EU"},
|
|
28
|
-
{"_id": "1-4", "id": "AI", "name": "Anguilla", "ext": "", "region": "US"},
|
|
29
|
-
{"_id": "1-5", "id": "AF", "name": "Afghanistan", "ext": "", "region": "JP"},
|
|
30
|
-
{"_id": "1-6", "id": "AM", "name": "Armenia", "ext": "", "region": "JP"},
|
|
31
|
-
{"_id": "1-7", "id": "AZ", "name": "Azerbaijan", "ext": "", "region": "JP"},
|
|
32
|
-
{"_id": "1-8", "id": "AU", "name": "Australia", "ext": "", "region": "JP"},
|
|
33
|
-
{"_id": "2-0", "id": "BO", "name": "Bolivia", "ext": "", "region": "US"},
|
|
34
|
-
{"_id": "2-1", "id": "BR", "name": "Brazil", "ext": "", "region": "US"},
|
|
35
|
-
{"_id": "2-2", "id": "BG", "name": "Bulgaria", "ext": "", "region": "EU"},
|
|
36
|
-
{"_id": "2-3", "id": "BS", "name": "Bahamas", "ext": "", "region": "US"},
|
|
37
|
-
{"_id": "2-4", "id": "BE", "name": "Belgium", "ext": "", "region": "EU"},
|
|
38
|
-
{"_id": "2-5", "id": "BZ", "name": "Belize", "ext": "", "region": "US"},
|
|
39
|
-
{"_id": "2-6", "id": "BB", "name": "Barbados", "ext": "", "region": "US"},
|
|
40
|
-
{"_id": "2-7", "id": "BM", "name": "Bermuda", "ext": "", "region": "US"},
|
|
41
|
-
{"_id": "2-8", "id": "BN", "name": "Brunei", "ext": "", "region": "JP"},
|
|
42
|
-
{"_id": "2-9", "id": "BH", "name": "Bahrain", "ext": "", "region": "JP"},
|
|
43
|
-
{"_id": "2-10", "id": "BD", "name": "Bangladesh", "ext": "", "region": "JP"},
|
|
44
|
-
{"_id": "2-11", "id": "BT", "name": "Bhutan", "ext": "", "region": "JP"},
|
|
45
|
-
{"_id": "3-0", "id": "CA", "name": "Canada", "ext": "", "region": "US"},
|
|
46
|
-
{"_id": "3-1", "id": "CL", "name": "Chile", "ext": "", "region": "US"},
|
|
47
|
-
{"_id": "3-2", "id": "CO", "name": "Colombia", "ext": "", "region": "US"},
|
|
48
|
-
{"_id": "3-3", "id": "CR", "name": "Costa Rica", "ext": "", "region": "US"},
|
|
49
|
-
{"_id": "3-4", "id": "CU", "name": "Cuba", "ext": "", "region": "US"},
|
|
50
|
-
{"_id": "3-5", "id": "CZ", "name": "Czech Republic", "ext": "", "region": "EU"},
|
|
51
|
-
{"_id": "3-6", "id": "HR", "name": "Croatia", "ext": "", "region": "EU"},
|
|
52
|
-
{"_id": "3-7", "id": "KY", "name": "Cayman Islands", "ext": "", "region": "US"},
|
|
53
|
-
{"_id": "3-8", "id": "KH", "name": "Cambodia", "ext": "", "region": "JP"},
|
|
54
|
-
{"_id": "3-9", "id": "CY", "name": "Cyprus", "ext": "", "region": "JP"},
|
|
55
|
-
{"_id": "4-0", "id": "DK", "name": "Denmark", "ext": "", "region": "EU"},
|
|
56
|
-
{"_id": "4-1", "id": "DO", "name": "Dominican Republic", "ext": "", "region": "US"},
|
|
57
|
-
{"_id": "5-0", "id": "EC", "name": "Ecuador", "ext": "", "region": "US"},
|
|
58
|
-
{"_id": "5-1", "id": "SV", "name": "El Salvador", "ext": "", "region": "US"},
|
|
59
|
-
{"_id": "5-2", "id": "EE", "name": "Estonia", "ext": "", "region": "EU"},
|
|
60
|
-
{"_id": "6-0", "id": "FI", "name": "Finland", "ext": "", "region": "EU"},
|
|
61
|
-
{"_id": "6-1", "id": "FR", "name": "France", "ext": "", "region": "EU"},
|
|
62
|
-
{"_id": "6-2", "id": "GF", "name": "French Guiana", "ext": "", "region": "US"},
|
|
63
|
-
{"_id": "7-0", "id": "GR", "name": "Greece", "ext": "", "region": "EU"},
|
|
64
|
-
{"_id": "7-1", "id": "GT", "name": "Guatemala", "ext": "", "region": "US"},
|
|
65
|
-
{"_id": "7-2", "id": "GY", "name": "Guyana", "ext": "", "region": "US"},
|
|
66
|
-
{"_id": "7-3", "id": "DE", "name": "Germany", "ext": "", "region": "EU"},
|
|
67
|
-
{"_id": "7-4", "id": "GD", "name": "Grenada", "ext": "", "region": "US"},
|
|
68
|
-
{"_id": "7-5", "id": "GE", "name": "Georgia", "ext": "", "region": "JP"},
|
|
69
|
-
{"_id": "8-0", "id": "HT", "name": "Haiti", "ext": "", "region": "US"},
|
|
70
|
-
{"_id": "8-1", "id": "HN", "name": "Honduras", "ext": "", "region": "US"},
|
|
71
|
-
{"_id": "8-2", "id": "HU", "name": "Hungary", "ext": "", "region": "EU"},
|
|
72
|
-
{"_id": "9-0", "id": "IS", "name": "Iceland", "ext": "", "region": "EU"},
|
|
73
|
-
{"_id": "9-1", "id": "IE", "name": "Ireland", "ext": "", "region": "EU"},
|
|
74
|
-
{"_id": "9-2", "id": "IT", "name": "Italy", "ext": "", "region": "EU"},
|
|
75
|
-
{"_id": "9-3", "id": "IN", "name": "India", "ext": "", "region": "JP"},
|
|
76
|
-
{"_id": "9-4", "id": "ID", "name": "Indonesia", "ext": "", "region": "JP"},
|
|
77
|
-
{"_id": "9-5", "id": "IR", "name": "Iran", "ext": "", "region": "JP"},
|
|
78
|
-
{"_id": "9-6", "id": "IQ", "name": "Iraq", "ext": "", "region": "JP"},
|
|
79
|
-
{"_id": "9-7", "id": "IL", "name": "Israel", "ext": "", "region": "EU"},
|
|
80
|
-
{"_id": "10-0", "id": "JM", "name": "Jamaica", "ext": "", "region": "US"},
|
|
81
|
-
{"_id": "10-1", "id": "JP", "name": "Japan", "ext": "", "region": "JP"},
|
|
82
|
-
{"_id": "10-2", "id": "JO", "name": "Jordan", "ext": "", "region": "JP"},
|
|
83
|
-
{"_id": "11-0", "id": "KZ", "name": "Kazakhstan", "ext": "", "region": "JP"},
|
|
84
|
-
{"_id": "11-1", "id": "KR", "name": "Korea", "ext": "", "region": "JP"},
|
|
85
|
-
{"_id": "11-2", "id": "KW", "name": "Kuwait", "ext": "", "region": "JP"},
|
|
86
|
-
{"_id": "11-3", "id": "KG", "name": "Kyrgyzstan", "ext": "", "region": "JP"},
|
|
87
|
-
{"_id": "12-0", "id": "LV", "name": "Latvia", "ext": "", "region": "EU"},
|
|
88
|
-
{"_id": "12-1", "id": "LT", "name": "Lithuania", "ext": "", "region": "EU"},
|
|
89
|
-
{"_id": "12-2", "id": "LU", "name": "Luxembourg", "ext": "", "region": "EU"},
|
|
90
|
-
{"_id": "12-3", "id": "LI", "name": "Liechtenstein", "ext": "", "region": "EU"},
|
|
91
|
-
{"_id": "12-4", "id": "LA", "name": "Laos", "ext": "", "region": "JP"},
|
|
92
|
-
{"_id": "12-5", "id": "LB", "name": "Lebanon", "ext": "", "region": "JP"},
|
|
93
|
-
{"_id": "13-0", "id": "MT", "name": "Malta", "ext": "", "region": "EU"},
|
|
94
|
-
{"_id": "13-1", "id": "MX", "name": "Mexico", "ext": "", "region": "US"},
|
|
95
|
-
{"_id": "13-2", "id": "MD", "name": "Moldova", "ext": "", "region": "EU"},
|
|
96
|
-
{"_id": "13-3", "id": "MC", "name": "Monaco", "ext": "", "region": "EU"},
|
|
97
|
-
{"_id": "13-4", "id": "MS", "name": "Montserrat", "ext": "", "region": "US"},
|
|
98
|
-
{"_id": "13-5", "id": "ME", "name": "Montenegro", "ext": "", "region": "EU"},
|
|
99
|
-
{"_id": "13-6", "id": "MY", "name": "Malaysia", "ext": "", "region": "JP"},
|
|
100
|
-
{"_id": "13-7", "id": "MV", "name": "Maldives", "ext": "", "region": "JP"},
|
|
101
|
-
{"_id": "13-8", "id": "MN", "name": "Mongolia", "ext": "", "region": "JP"},
|
|
102
|
-
{"_id": "13-9", "id": "MM", "name": "Myanmar", "ext": "", "region": "JP"},
|
|
103
|
-
{"_id": "14-0", "id": "NL", "name": "Netherlands", "ext": "", "region": "EU"},
|
|
104
|
-
{"_id": "14-1", "id": "NI", "name": "Nicaragua", "ext": "", "region": "US"},
|
|
105
|
-
{"_id": "14-2", "id": "NO", "name": "Norway", "ext": "", "region": "EU"},
|
|
106
|
-
{"_id": "14-3", "id": "MK", "name": "North Macedonia", "ext": "", "region": "EU"},
|
|
107
|
-
{"_id": "14-4", "id": "NZ", "name": "New Zealand", "ext": "", "region": "JP"},
|
|
108
|
-
{"_id": "14-5", "id": "NP", "name": "Nepal", "ext": "", "region": "JP"},
|
|
109
|
-
{"_id": "14-6", "id": "KP", "name": "North Korea", "ext": "", "region": "JP"},
|
|
110
|
-
{"_id": "15-0", "id": "OM", "name": "Oman", "ext": "", "region": "JP"},
|
|
111
|
-
{"_id": "16-0", "id": "PA", "name": "Panama", "ext": "", "region": "US"},
|
|
112
|
-
{"_id": "16-1", "id": "PY", "name": "Paraguay", "ext": "", "region": "US"},
|
|
113
|
-
{"_id": "16-2", "id": "PE", "name": "Peru", "ext": "", "region": "US"},
|
|
114
|
-
{"_id": "16-3", "id": "PT", "name": "Portugal", "ext": "", "region": "EU"},
|
|
115
|
-
{"_id": "16-4", "id": "PK", "name": "Pakistan", "ext": "", "region": "JP"},
|
|
116
|
-
{"_id": "16-5", "id": "PS", "name": "Palestine", "ext": "", "region": "JP"},
|
|
117
|
-
{"_id": "16-6", "id": "PH", "name": "Philippines", "ext": "", "region": "JP"},
|
|
118
|
-
{"_id": "17-0", "id": "QA", "name": "Qatar", "ext": "", "region": "JP"},
|
|
119
|
-
{"_id": "18-0", "id": "RO", "name": "Romania", "ext": "", "region": "EU"},
|
|
120
|
-
{"_id": "18-1", "id": "RU", "name": "Russia", "ext": "", "region": "EU"},
|
|
121
|
-
{"_id": "19-0", "id": "SM", "name": "San Marino", "ext": "", "region": "EU"},
|
|
122
|
-
{"_id": "19-1", "id": "SI", "name": "Slovenia", "ext": "", "region": "EU"},
|
|
123
|
-
{"_id": "19-2", "id": "ES", "name": "Spain", "ext": "", "region": "EU"},
|
|
124
|
-
{"_id": "19-3", "id": "LC", "name": "St.Lucia", "ext": "", "region": "US"},
|
|
125
|
-
{"_id": "19-4", "id": "SR", "name": "Suriname", "ext": "", "region": "US"},
|
|
126
|
-
{"_id": "19-5", "id": "SE", "name": "Sweden", "ext": "", "region": "EU"},
|
|
127
|
-
{"_id": "19-6", "id": "SK", "name": "Slovakia", "ext": "", "region": "EU"},
|
|
128
|
-
{"_id": "19-7", "id": "RS/ME", "name": "Serbia", "ext": "", "region": "EU"},
|
|
129
|
-
{
|
|
130
|
-
"_id": "19-8",
|
|
131
|
-
"id": "KN",
|
|
132
|
-
"name": "St.Kitts and Nevis",
|
|
133
|
-
"ext": "",
|
|
134
|
-
"region": "US",
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
"_id": "19-9",
|
|
138
|
-
"id": "VC",
|
|
139
|
-
"name": "St.Vincent and the Grenadines",
|
|
140
|
-
"ext": "",
|
|
141
|
-
"region": "US",
|
|
142
|
-
},
|
|
143
|
-
{"_id": "19-10", "id": "SA", "name": "Saudi Arabia", "ext": "", "region": "JP"},
|
|
144
|
-
{"_id": "19-11", "id": "SG", "name": "Singapore", "ext": "", "region": "JP"},
|
|
145
|
-
{"_id": "19-12", "id": "LK", "name": "Sri Lanka", "ext": "", "region": "JP"},
|
|
146
|
-
{"_id": "19-13", "id": "SY", "name": "Syria", "ext": "", "region": "JP"},
|
|
147
|
-
{"_id": "19-14", "id": "CH", "name": "Switzerland", "ext": "", "region": "EU"},
|
|
148
|
-
{
|
|
149
|
-
"_id": "20-0",
|
|
150
|
-
"id": "TT",
|
|
151
|
-
"name": "Trinidad and Tobago",
|
|
152
|
-
"ext": "",
|
|
153
|
-
"region": "US",
|
|
154
|
-
},
|
|
155
|
-
{"_id": "20-1", "id": "TC", "name": "Turks & Caicos", "ext": "", "region": "US"},
|
|
156
|
-
{"_id": "20-2", "id": "TJ", "name": "Tajikistan", "ext": "", "region": "JP"},
|
|
157
|
-
{"_id": "20-3", "id": "TH", "name": "Thailand", "ext": "", "region": "JP"},
|
|
158
|
-
{"_id": "20-4", "id": "TG", "name": "Togo", "ext": "", "region": "JP"},
|
|
159
|
-
{"_id": "20-5", "id": "TR", "name": "Turkey", "ext": "", "region": "EU"},
|
|
160
|
-
{"_id": "20-6", "id": "TM", "name": "Turkmenistan", "ext": "", "region": "JP"},
|
|
161
|
-
{"_id": "21-0", "id": "UA", "name": "Ukraine", "ext": "", "region": "EU"},
|
|
162
|
-
{"_id": "21-1", "id": "GB", "name": "United Kingdom", "ext": "", "region": "EU"},
|
|
163
|
-
{"_id": "21-2", "id": "US", "name": "United States", "ext": "", "region": "US"},
|
|
164
|
-
{"_id": "21-3", "id": "UY", "name": "Uruguay", "ext": "", "region": "US"},
|
|
165
|
-
{
|
|
166
|
-
"_id": "21-4",
|
|
167
|
-
"id": "AE",
|
|
168
|
-
"name": "United Arab Emirates",
|
|
169
|
-
"ext": "",
|
|
170
|
-
"region": "JP",
|
|
171
|
-
},
|
|
172
|
-
{"_id": "21-5", "id": "UZ", "name": "Uzbekistan", "ext": "", "region": "JP"},
|
|
173
|
-
{"_id": "22-0", "id": "VE", "name": "Venezuela", "ext": "", "region": "US"},
|
|
174
|
-
{"_id": "22-1", "id": "VG", "name": "Virgin Islands", "ext": "", "region": "US"},
|
|
175
|
-
{"_id": "22-2", "id": "VN", "name": "Vietnam", "ext": "", "region": "JP"},
|
|
176
|
-
{"_id": "23-0", "id": "YE", "name": "Yemen", "ext": "", "region": "JP"},
|
|
177
|
-
]
|
|
178
|
-
|
|
179
|
-
SUPPORTED_COUNTRY_NAMES = [item["name"] for item in SUPPORTED_COUNTRYS]
|
|
180
|
-
DEFAULT_COUNTRY_NAME = "United States"
|
|
181
|
-
CONF_LOGIN_RESPONSE = "login_response"
|
|
182
|
-
CONF_SELECTED_HOUSE = "selected_house"
|
|
183
|
-
CONF_DEVICE_LIST = "device_list"
|
|
184
|
-
CONF_PRODUCT_LIST = "product_list"
|
|
185
|
-
CONF_ACCESS_TOKEN = "accessToken"
|
|
186
|
-
CONF_ID = "id"
|
|
187
|
-
CONF_NAME = "name"
|
|
188
|
-
CONF_PRODUCT_ID = "productId"
|
|
189
|
-
CONF_PRODUCT = "product"
|
|
190
|
-
CONF_IS_DEFAULT = "isDefault"
|
|
191
|
-
CONF_TYPE = "type"
|
|
192
|
-
CONF_MODEL_ID = "modelId"
|
|
193
|
-
CONF_MAC = "mac"
|
|
194
|
-
CONF_AES_KEY = "aesKey"
|
|
195
|
-
CONF_MODEL_ID = "modelId"
|
|
196
|
-
CONF_HARDWARE_VERSION = "hardwareVersion"
|
|
197
|
-
CONF_SERVICE_MODULES = "serviceModules"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|