feat: add status_code property on http error handling (#1185)
Fixes #1183 🦕
Fixes #1255 🦕
- Add status code property in http error handler class.
- Resolve issue where error_details is not populated.
diff --git a/docs/start.md b/docs/start.md
index def0c4a..9207620 100644
--- a/docs/start.md
+++ b/docs/start.md
@@ -99,7 +99,7 @@
try:
response = request.execute()
except HttpError as e:
- print('Error response status code : {0}, reason : {1}'.format(e.resp.status, e.error_details))
+ print('Error response status code : {0}, reason : {1}'.format(e.status_code, e.error_details))
```
Alternatively, you can combine previous steps on a single line:
diff --git a/googleapiclient/errors.py b/googleapiclient/errors.py
index 7163645..33ee682 100644
--- a/googleapiclient/errors.py
+++ b/googleapiclient/errors.py
@@ -43,6 +43,12 @@
self.content = content
self.uri = uri
self.error_details = ""
+ self._get_reason()
+
+ @property
+ def status_code(self):
+ """Return the HTTP status code from the response content."""
+ return self.resp.status
def _get_reason(self):
"""Calculate the reason for the error from the response content."""
diff --git a/tests/test_errors.py b/tests/test_errors.py
index 78dee17..9c139a6 100644
--- a/tests/test_errors.py
+++ b/tests/test_errors.py
@@ -83,6 +83,8 @@
reason="Failed",
)
error = HttpError(resp, content, uri="http://example.org")
+ self.assertEqual(error.error_details, "error details")
+ self.assertEqual(error.status_code, 400)
self.assertEqual(
str(error),
'<HttpError 400 when requesting http://example.org returned "country is required". Details: "error details">',