From 09235dd3a23a4b703683761c9158ccf689ad01c9 Mon Sep 17 00:00:00 2001 From: Martin Dobias Date: Thu, 18 May 2023 17:15:46 +0200 Subject: [PATCH] Improve how HTTP errors are reported as client errors --- mergin/client.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mergin/client.py b/mergin/client.py index 8e09874..ee241a5 100644 --- a/mergin/client.py +++ b/mergin/client.py @@ -202,8 +202,17 @@ def _do_request(self, request): except urllib.error.HTTPError as e: if e.headers.get("Content-Type", "") == "application/problem+json": info = json.load(e) - raise ClientError(info.get("detail")) - raise ClientError(e.read().decode("utf-8")) + err_detail = info.get("detail") + else: + err_detail = e.read().decode("utf-8") + + error_msg = ( + f"HTTP Error: {e.code} {e.reason}\n" + f"URL: {request.get_full_url()}\n" + f"Method: {request.get_method()}\n" + f"Detail: {err_detail}" + ) + raise ClientError(error_msg) except urllib.error.URLError as e: # e.g. when DNS resolution fails (no internet connection?) raise ClientError("Error requesting " + request.full_url + ": " + str(e))