Skip to content

Commit 81a0741

Browse files
adamtheturtleclaude
andcommitted
Use make_request in generate_vumark_instance
Adds extra_headers and optional expected_result_code (None = binary/HTTP-200 success) to make_request, and adds VuMark-specific result codes to its error dispatch dict, so generate_vumark_instance no longer needs to call _target_api_request directly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent eb6f371 commit 81a0741

1 file changed

Lines changed: 20 additions & 25 deletions

File tree

src/vws/vws.py

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,9 @@ def make_request(
187187
method: str,
188188
data: bytes,
189189
request_path: str,
190-
expected_result_code: str,
190+
expected_result_code: str | None,
191191
content_type: str,
192+
extra_headers: dict[str, str] | None = None,
192193
) -> Response:
193194
"""Make a request to the Vuforia Target API.
194195
@@ -201,7 +202,11 @@ def make_request(
201202
request.
202203
expected_result_code: See "VWS API Result Codes" on
203204
https://developer.vuforia.com/library/web-api/cloud-targets-web-services-api.
205+
Pass ``None`` for endpoints that return a non-JSON success
206+
response (e.g. binary data); success is then determined by an
207+
HTTP 200 status code.
204208
content_type: The content type of the request.
209+
extra_headers: Additional headers to include in the request.
205210
206211
Returns:
207212
The response to the request made by `requests`.
@@ -224,8 +229,15 @@ def make_request(
224229
request_path=request_path,
225230
base_vws_url=self._base_vws_url,
226231
request_timeout_seconds=self._request_timeout_seconds,
232+
extra_headers=extra_headers,
227233
)
228234

235+
if (
236+
response.status_code == HTTPStatus.OK
237+
and expected_result_code is None
238+
):
239+
return response
240+
229241
result_code = json.loads(s=response.text)["result_code"]
230242

231243
if result_code == expected_result_code:
@@ -234,9 +246,12 @@ def make_request(
234246
exception = {
235247
"AuthenticationFailure": AuthenticationFailureError,
236248
"BadImage": BadImageError,
249+
"BadRequest": BadRequestError,
237250
"DateRangeError": DateRangeError,
238251
"Fail": FailError,
239252
"ImageTooLarge": ImageTooLargeError,
253+
"InvalidAcceptHeader": InvalidAcceptHeaderError,
254+
"InvalidInstanceId": InvalidInstanceIdError,
240255
"MetadataTooLarge": MetadataTooLargeError,
241256
"ProjectHasNoAPIAccess": ProjectHasNoAPIAccessError,
242257
"ProjectInactive": ProjectInactiveError,
@@ -765,33 +780,13 @@ def generate_vumark_instance(
765780
encoding="utf-8",
766781
)
767782

768-
response = _target_api_request(
769-
content_type=content_type,
770-
server_access_key=self._server_access_key,
771-
server_secret_key=self._server_secret_key,
783+
response = self.make_request(
772784
method=HTTPMethod.POST,
773785
data=request_data,
774786
request_path=request_path,
775-
base_vws_url=self._base_vws_url,
776-
request_timeout_seconds=self._request_timeout_seconds,
787+
expected_result_code=None,
788+
content_type=content_type,
777789
extra_headers={"Accept": accept},
778790
)
779791

780-
if response.status_code == HTTPStatus.OK:
781-
return response.content
782-
783-
result_code = json.loads(s=response.text)["result_code"]
784-
785-
exception = {
786-
"AuthenticationFailure": AuthenticationFailureError,
787-
"BadRequest": BadRequestError,
788-
"DateRangeError": DateRangeError,
789-
"Fail": FailError,
790-
"InvalidAcceptHeader": InvalidAcceptHeaderError,
791-
"InvalidInstanceId": InvalidInstanceIdError,
792-
"RequestTimeTooSkewed": RequestTimeTooSkewedError,
793-
"TargetStatusNotSuccess": TargetStatusNotSuccessError,
794-
"UnknownTarget": UnknownTargetError,
795-
}[result_code]
796-
797-
raise exception(response=response)
792+
return response.content

0 commit comments

Comments
 (0)