From b9b30782c978578458cba19bd0c42a556493085e Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sat, 19 Feb 2022 18:46:06 +0100 Subject: [PATCH] Restructure do_matrix_request to simplify it --- aleksis/apps/matrix/util/matrix.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/aleksis/apps/matrix/util/matrix.py b/aleksis/apps/matrix/util/matrix.py index 41a7b04..d13e44e 100644 --- a/aleksis/apps/matrix/util/matrix.py +++ b/aleksis/apps/matrix/util/matrix.py @@ -28,18 +28,19 @@ def do_matrix_request(method: str, url: str, body: Optional[dict] = None) -> Dic """Do a HTTP request to the Matrix Client Server API.""" while True: res = requests.request(method=method, url=build_url(url), headers=get_headers(), json=body) - if res.status_code != requests.codes.ok: - try: - data = res.json() - except JSONDecodeError: - raise MatrixException(res.text) - - # If rate limit exceeded, wait and retry - if data.get("errcode", "") == "M_LIMIT_EXCEEDED": - time.sleep(data["retry_after_ms"] / 1000) - else: - raise MatrixException(data) - else: + + try: + data = res.json() + except JSONDecodeError: + raise MatrixException(res.text) from JSONDecodeError + + if res.status_code == requests.codes.ok: break - return res.json() + # If rate limit exceeded, wait and retry + if data.get("errcode", "") == "M_LIMIT_EXCEEDED": + time.sleep(data["retry_after_ms"] / 1000) + else: + raise MatrixException(data) + + return data -- GitLab