From 6cd969148afbd0b51ffdc2b12908d75d5fd23ca4 Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Sun, 9 Jul 2023 19:48:38 +0200 Subject: Implement Gen2 digest auth --- ShellyPy/base.py | 4 +--- ShellyPy/gen1.py | 7 +++++-- ShellyPy/gen2.py | 9 ++++++++- 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__) -- cgit v1.2.3