Skip to content

Commit 939cd41

Browse files
adamtheturtleclaude
andcommitted
Move 429/5xx handling into _target_api_request
Centralises TooManyRequestsError and ServerError raising so callers (make_request, generate_vumark_instance) no longer duplicate the logic. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent a7ef224 commit 939cd41

File tree

1 file changed

+20
-22
lines changed

1 file changed

+20
-22
lines changed

src/vws/vws.py

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ def _target_api_request(
9595
9696
Returns:
9797
The response to the request made by `requests`.
98+
99+
Raises:
100+
~vws.exceptions.custom_exceptions.ServerError: There is an error
101+
with Vuforia's servers.
102+
~vws.exceptions.vws_exceptions.TooManyRequestsError: Vuforia is
103+
rate limiting access.
98104
"""
99105
date_string = rfc_1123_date()
100106

@@ -125,7 +131,7 @@ def _target_api_request(
125131
timeout=request_timeout_seconds,
126132
)
127133

128-
return Response(
134+
response = Response(
129135
text=requests_response.text,
130136
url=requests_response.url,
131137
status_code=requests_response.status_code,
@@ -135,6 +141,19 @@ def _target_api_request(
135141
content=bytes(requests_response.content),
136142
)
137143

144+
if (
145+
response.status_code == HTTPStatus.TOO_MANY_REQUESTS
146+
): # pragma: no cover
147+
# The Vuforia API returns a 429 response with no JSON body.
148+
raise TooManyRequestsError(response=response)
149+
150+
if (
151+
response.status_code >= HTTPStatus.INTERNAL_SERVER_ERROR
152+
): # pragma: no cover
153+
raise ServerError(response=response)
154+
155+
return response
156+
138157

139158
@beartype(conf=BeartypeConf(is_pep484_tower=True))
140159
class VWS:
@@ -207,17 +226,6 @@ def make_request(
207226
request_timeout_seconds=self._request_timeout_seconds,
208227
)
209228

210-
if (
211-
response.status_code == HTTPStatus.TOO_MANY_REQUESTS
212-
): # pragma: no cover
213-
# The Vuforia API returns a 429 response with no JSON body.
214-
raise TooManyRequestsError(response=response)
215-
216-
if (
217-
response.status_code >= HTTPStatus.INTERNAL_SERVER_ERROR
218-
): # pragma: no cover
219-
raise ServerError(response=response)
220-
221229
result_code = json.loads(s=response.text)["result_code"]
222230

223231
if result_code == expected_result_code:
@@ -772,16 +780,6 @@ def generate_vumark_instance(
772780
if response.status_code == HTTPStatus.OK:
773781
return response.content
774782

775-
if (
776-
response.status_code == HTTPStatus.TOO_MANY_REQUESTS
777-
): # pragma: no cover
778-
raise TooManyRequestsError(response=response)
779-
780-
if (
781-
response.status_code >= HTTPStatus.INTERNAL_SERVER_ERROR
782-
): # pragma: no cover
783-
raise ServerError(response=response)
784-
785783
result_code = json.loads(s=response.text)["result_code"]
786784

787785
exception = {

0 commit comments

Comments
 (0)