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