Skip to content

Commit

Permalink
Merge pull request #51 from domwillcode/styling
Browse files Browse the repository at this point in the history
Styling
  • Loading branch information
gjohansson-ST authored Sep 4, 2022
2 parents cd69567 + a8cd293 commit 64e46f4
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 21 deletions.
42 changes: 25 additions & 17 deletions yalesmartalarmclient/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,15 @@
from __future__ import annotations

import logging
from typing import Any, Optional, cast
from typing import Any, cast

import requests
from requests.exceptions import ( # pylint: disable=redefined-builtin
HTTPError,
ConnectionError,
Timeout,
RequestException,
)

from .exceptions import AuthenticationError, UnknownError
from .const import (
Expand All @@ -28,14 +34,16 @@ def __init__(self, username: str, password: str) -> None:
self._host = HOST
self.username = username
self.password = password
self.refresh_token: Optional[str] = None
self.access_token: Optional[str] = None
self.refresh_token: str | None = None
self.access_token: str | None = None
self._authorize()

@property
def auth_headers(self) -> dict[str, str]:
"""Return authentication headers."""
return {"Authorization": "Bearer " + self.access_token}
if self.access_token:
return {"Authorization": "Bearer " + self.access_token}
return {"Authorization": "Bearer "}

def get_authenticated(self, endpoint: str) -> dict[str, Any]:
"""Execute an GET request on an endpoint.
Expand All @@ -54,21 +62,21 @@ def get_authenticated(self, endpoint: str) -> dict[str, Any]:
url, headers=self.auth_headers, timeout=DEFAULT_REQUEST_TIMEOUT
)
response.raise_for_status()
except requests.exceptions.HTTPError as error:
except HTTPError as error:
_LOGGER.debug("Http Error: %s", error)
if response.status_code in [401, 403]:
self.refresh_token = None
self.access_token = None
self._authorize()
self.get_authenticated(endpoint)
raise ConnectionError(f"Connection error {error}") from error
except requests.exceptions.ConnectionError as error:
except ConnectionError as error:
_LOGGER.debug("Connection Error: %s", error)
raise ConnectionError(f"Connection error {error}") from error
except requests.exceptions.Timeout as error:
except Timeout as error:
_LOGGER.debug("Timeout Error: %s", error)
raise TimeoutError(f"Timeout {error}") from error
except requests.exceptions.RequestException as error:
except RequestException as error:
_LOGGER.debug("Requests Error: %s", error)
raise UnknownError(f"Requests error {error}") from error
except Exception as error:
Expand All @@ -78,7 +86,7 @@ def get_authenticated(self, endpoint: str) -> dict[str, Any]:
return cast(dict[str, Any], response.json())

def post_authenticated(
self, endpoint: str, params: Optional[dict[Any, Any]] = None
self, endpoint: str, params: dict[Any, Any] | None = None
) -> dict[str, Any]:
"""Execute a POST request on an endpoint.
Expand All @@ -102,21 +110,21 @@ def post_authenticated(
timeout=DEFAULT_REQUEST_TIMEOUT,
)
response.raise_for_status()
except requests.exceptions.HTTPError as error:
except HTTPError as error:
_LOGGER.debug("Http Error: %s", error)
if response.status_code in [401, 403]:
self.refresh_token = None
self.access_token = None
self._authorize()
self.post_authenticated(endpoint, params)
raise ConnectionError(f"Connection error {error}") from error
except requests.exceptions.ConnectionError as error:
except ConnectionError as error:
_LOGGER.debug("Connection Error: %s", error)
raise ConnectionError(f"Connection error {error}") from error
except requests.exceptions.Timeout as error:
except Timeout as error:
_LOGGER.debug("Timeout Error: %s", error)
raise TimeoutError(f"Timeout {error}") from error
except requests.exceptions.RequestException as error:
except RequestException as error:
_LOGGER.debug("Requests Error: %s", error)
raise UnknownError(f"Requests error {error}") from error
except Exception as error:
Expand Down Expand Up @@ -165,18 +173,18 @@ def _authorize(self) -> tuple[str, str]:
url, headers=headers, data=payload, timeout=DEFAULT_REQUEST_TIMEOUT
)
response.raise_for_status()
except requests.exceptions.HTTPError as error:
except HTTPError as error:
_LOGGER.debug("Http Error: %s", error)
if response.status_code in [401, 403]:
raise AuthenticationError(f"Failed to authenticate {error}") from error
raise ConnectionError(f"Connection error {error}") from error
except requests.exceptions.ConnectionError as error:
except ConnectionError as error:
_LOGGER.debug("Connection Error: %s", error)
raise ConnectionError(f"Connection error {error}") from error
except requests.exceptions.Timeout as error:
except Timeout as error:
_LOGGER.debug("Timeout Error: %s", error)
raise TimeoutError(f"Timeout {error}") from error
except requests.exceptions.RequestException as error:
except RequestException as error:
_LOGGER.debug("Requests Error: %s", error)
raise UnknownError(f"Requests error {error}") from error
except Exception as error:
Expand Down
2 changes: 1 addition & 1 deletion yalesmartalarmclient/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ def get_armed_status(self, retry: int = 3) -> str:
time.sleep(5)
return self.get_armed_status(retry - 1)
raise error
return cast(str, alarm_state.get("data")[0].get("mode"))
return cast(str, alarm_state.get("data", [])[0].get("mode"))

def set_armed_status(self, mode: str) -> bool:
"""Set armed status.
Expand Down
5 changes: 2 additions & 3 deletions yalesmartalarmclient/lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,9 @@ def __eq__(self, other: object) -> bool:
"""Compare two lock objects."""
if isinstance(other, self.__class__):
return self.name == other.name
elif isinstance(other, str):
if isinstance(other, str):
return self.name == other
else:
return False
return False

def __str__(self) -> str:
"""Return string representation of a lock."""
Expand Down

0 comments on commit 64e46f4

Please sign in to comment.