aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan200101 <sentrycraft123@gmail.com>2023-07-09 19:48:38 +0200
committerJan200101 <sentrycraft123@gmail.com>2023-07-09 19:48:38 +0200
commit6cd969148afbd0b51ffdc2b12908d75d5fd23ca4 (patch)
treef6136a66451536002a195c69ce488df3cf4a2d24
parente4f6edc19bc45835c19ffdbaaffc8d33143f0fb4 (diff)
downloadShellyPy-6cd969148afbd0b51ffdc2b12908d75d5fd23ca4.tar.gz
ShellyPy-6cd969148afbd0b51ffdc2b12908d75d5fd23ca4.zip
Implement Gen2 digest auth
-rw-r--r--ShellyPy/base.py4
-rw-r--r--ShellyPy/gen1.py7
-rw-r--r--ShellyPy/gen2.py9
3 files changed, 14 insertions, 6 deletions
diff --git a/ShellyPy/base.py b/ShellyPy/base.py
index 505d796..6c34be0 100644
--- a/ShellyPy/base.py
+++ b/ShellyPy/base.py
@@ -5,8 +5,6 @@ if version_info.major == 3:
else:
JSONDecodeError = ValueError
-from requests.auth import HTTPBasicAuth
-
class ShellyBase:
def __init__(self, ip, port = "80", *args, **kwargs):
@@ -37,7 +35,7 @@ class ShellyBase:
self.__timeout__ = kwargs.get("timeout", 5)
- self.__credentials__ = HTTPBasicAuth(
+ self.__credentials__ = (
login.get("username", ""), login.get("password", "")
)
diff --git a/ShellyPy/gen1.py b/ShellyPy/gen1.py
index e3df549..dea4650 100644
--- a/ShellyPy/gen1.py
+++ b/ShellyPy/gen1.py
@@ -7,6 +7,7 @@ else:
from requests import post
+from requests.auth import HTTPBasicAuth
from .error import BadLogin, NotFound, BadResponse
@@ -77,9 +78,11 @@ class ShellyGen1(ShellyBase):
print("Target Adress: {}\n"
"Authentication: {}\n"
"Timeout: {}"
- "".format(url, any(self.__credentials__.username + self.__credentials__.password), self.__timeout__))
+ "".format(url, any(self.__credentials__), self.__timeout__))
- response = post(url, auth=self.__credentials__,
+ credentials = HTTPBasicAuth(*self.__credentials__)
+
+ response = post(url, auth=credentials,
timeout=self.__timeout__)
if response.status_code == 401:
diff --git a/ShellyPy/gen2.py b/ShellyPy/gen2.py
index 96747c9..e94a1f0 100644
--- a/ShellyPy/gen2.py
+++ b/ShellyPy/gen2.py
@@ -6,6 +6,7 @@ else:
JSONDecodeError = ValueError
from requests import post
+from requests.auth import HTTPDigestAuth
from .error import BadLogin, NotFound, BadResponse
@@ -50,7 +51,13 @@ class ShellyGen2(ShellyBase):
if values:
payload["params"] = values
- response = post(url, auth=self.__credentials__,
+ credentials = None
+ try:
+ credentials = auth=HTTPDigestAuth('admin', self.__credentials__[1])
+ except IndexError:
+ pass
+
+ response = post(url, auth=credentials,
json=payload,
timeout=self.__timeout__)