Skip to content

Commit bca49d5

Browse files
Expose URL path in exception [WAL-9342]
1 parent a3815ee commit bca49d5

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

openapi_python_client/templates/endpoint_module.py.jinja

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,14 @@ def _parse_response(*, client: Union[AuthenticatedClient, Client], response: htt
7878
try:
7979
return int(response.headers["x-result-count"])
8080
except KeyError:
81-
raise errors.UnexpectedStatus(response.status_code, b"Expected 'X-Result-Count' header for HEAD request, but it was not found.")
81+
raise errors.UnexpectedStatus(response.status_code, b"Expected 'X-Result-Count' header for HEAD request, but it was not found.", response.url)
8282
except ValueError:
8383
count_val = response.headers.get("x-result-count")
8484
msg = f"Expected 'X-Result-Count' header to be an integer, but got '{count_val}'."
85-
raise errors.UnexpectedStatus(response.status_code, msg.encode())
85+
raise errors.UnexpectedStatus(response.status_code, msg.encode(), response.url)
8686
{% else %}
87+
if response.status_code == 404:
88+
raise errors.UnexpectedStatus(response.status_code, response.content, response.url)
8789
{% for response in endpoint.responses %}
8890
if response.status_code == {{ response.status_code.value }}:
8991
{% if parsed_responses %}{% import "property_templates/" + response.prop.template as prop_template %}
@@ -100,7 +102,7 @@ def _parse_response(*, client: Union[AuthenticatedClient, Client], response: htt
100102
{% endif %}
101103
{% endfor %}
102104
{% endif %}
103-
raise errors.UnexpectedStatus(response.status_code, response.content)
105+
raise errors.UnexpectedStatus(response.status_code, response.content, response.url)
104106

105107

106108
def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[{{ return_string }}]:
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
""" Contains shared errors types that can be raised from API functions """
22

3+
from httpx import URL
4+
5+
36
class UnexpectedStatus(Exception):
47
"""Raised by api functions when the response status an undocumented status"""
58

6-
def __init__(self, status_code: int, content: bytes):
9+
def __init__(self, status_code: int, content: bytes, url: URL):
710
self.status_code = status_code
811
self.content = content
12+
self.url = url
913

1014
super().__init__(
11-
f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}"
15+
f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}\n\nURL:\n{url}"
1216
)
1317

1418
__all__ = ["UnexpectedStatus"]

0 commit comments

Comments
 (0)