@@ -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