Skip to content

Commit d6bb484

Browse files
Merge pull request #1034 from adamtheturtle/result-code
Move result code function to new file
2 parents 58c0d07 + bcf2b2c commit d6bb484

File tree

2 files changed

+54
-47
lines changed

2 files changed

+54
-47
lines changed

src/vws/_result_codes.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
"""
2+
Tools for managing result codes.
3+
"""
4+
5+
from requests import Response
6+
7+
from vws.exceptions import (
8+
AuthenticationFailure,
9+
BadImage,
10+
Fail,
11+
ImageTooLarge,
12+
MetadataTooLarge,
13+
ProjectInactive,
14+
TargetNameExist,
15+
TargetStatusNotSuccess,
16+
TargetStatusProcessing,
17+
UnknownTarget,
18+
)
19+
20+
21+
def raise_for_result_code(
22+
response: Response,
23+
expected_result_code: str,
24+
) -> None:
25+
"""
26+
Raise an appropriate exception if the expected result code for a successful
27+
request is not returned.
28+
29+
Args:
30+
response: A response from Vuforia.
31+
expected_result_code: See
32+
https://library.vuforia.com/articles/Solution/How-To-Use-the-Vuforia-Web-Services-API.html#How-To-Interperete-VWS-API-Result-Codes
33+
"""
34+
result_code = response.json()['result_code']
35+
if result_code == expected_result_code:
36+
return
37+
38+
exception = {
39+
'AuthenticationFailure': AuthenticationFailure,
40+
'BadImage': BadImage,
41+
'Fail': Fail,
42+
'ImageTooLarge': ImageTooLarge,
43+
'MetadataTooLarge': MetadataTooLarge,
44+
'ProjectInactive': ProjectInactive,
45+
'TargetNameExist': TargetNameExist,
46+
'TargetStatusProcessing': TargetStatusProcessing,
47+
'TargetStatusNotSuccess': TargetStatusNotSuccess,
48+
'UnknownTarget': UnknownTarget,
49+
}[result_code]
50+
51+
raise exception(response=response)

src/vws/vws.py

Lines changed: 3 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,8 @@
1414
from timeout_decorator import timeout
1515

1616
from vws._authorization import authorization_header, rfc_1123_date
17-
from vws.exceptions import (
18-
AuthenticationFailure,
19-
BadImage,
20-
Fail,
21-
ImageTooLarge,
22-
MetadataTooLarge,
23-
ProjectInactive,
24-
TargetNameExist,
25-
TargetProcessingTimeout,
26-
TargetStatusNotSuccess,
27-
TargetStatusProcessing,
28-
UnknownTarget,
29-
)
17+
from vws._result_codes import raise_for_result_code
18+
from vws.exceptions import TargetProcessingTimeout
3019

3120

3221
def _target_api_request(
@@ -86,39 +75,6 @@ def _target_api_request(
8675
return response
8776

8877

89-
def _raise_for_result_code(
90-
response: Response,
91-
expected_result_code: str,
92-
) -> None:
93-
"""
94-
Raise an appropriate exception if the expected result code for a successful
95-
request is not returned.
96-
97-
Args:
98-
response: A response from Vuforia.
99-
expected_result_code: See
100-
https://library.vuforia.com/articles/Solution/How-To-Use-the-Vuforia-Web-Services-API.html#How-To-Interperete-VWS-API-Result-Codes
101-
"""
102-
result_code = response.json()['result_code']
103-
if result_code == expected_result_code:
104-
return
105-
106-
exception = {
107-
'AuthenticationFailure': AuthenticationFailure,
108-
'BadImage': BadImage,
109-
'Fail': Fail,
110-
'ImageTooLarge': ImageTooLarge,
111-
'MetadataTooLarge': MetadataTooLarge,
112-
'ProjectInactive': ProjectInactive,
113-
'TargetNameExist': TargetNameExist,
114-
'TargetStatusProcessing': TargetStatusProcessing,
115-
'TargetStatusNotSuccess': TargetStatusNotSuccess,
116-
'UnknownTarget': UnknownTarget,
117-
}[result_code]
118-
119-
raise exception(response=response)
120-
121-
12278
class VWS:
12379
"""
12480
An interface to Vuforia Web Services APIs.
@@ -173,7 +129,7 @@ def _make_request(
173129
base_vws_url=self._base_vws_url,
174130
)
175131

176-
_raise_for_result_code(
132+
raise_for_result_code(
177133
response=response,
178134
expected_result_code=expected_result_code,
179135
)

0 commit comments

Comments
 (0)