-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy path_vws_common.py
More file actions
133 lines (117 loc) · 4.03 KB
/
_vws_common.py
File metadata and controls
133 lines (117 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
"""Shared helpers for VWS client implementations."""
import base64
import json
from typing import NoReturn
from vws._image_utils import ImageType, get_image_data
from vws.exceptions.vws_exceptions import (
AuthenticationFailureError,
BadImageError,
BadRequestError,
DateRangeError,
FailError,
ImageTooLargeError,
InvalidAcceptHeaderError,
InvalidInstanceIdError,
InvalidTargetTypeError,
MetadataTooLargeError,
ProjectHasNoAPIAccessError,
ProjectInactiveError,
ProjectSuspendedError,
RequestQuotaReachedError,
RequestTimeTooSkewedError,
TargetNameExistError,
TargetQuotaReachedError,
TargetStatusNotSuccessError,
TargetStatusProcessingError,
UnknownTargetError,
)
from vws.response import Response
def raise_for_vws_result_code(
result_code: str, response: Response
) -> NoReturn:
"""Raise the appropriate VWS exception for the given result code."""
exception = {
"AuthenticationFailure": AuthenticationFailureError,
"BadImage": BadImageError,
"BadRequest": BadRequestError,
"DateRangeError": DateRangeError,
"Fail": FailError,
"ImageTooLarge": ImageTooLargeError,
"MetadataTooLarge": MetadataTooLargeError,
"ProjectHasNoAPIAccess": ProjectHasNoAPIAccessError,
"ProjectInactive": ProjectInactiveError,
"ProjectSuspended": ProjectSuspendedError,
"RequestQuotaReached": RequestQuotaReachedError,
"RequestTimeTooSkewed": RequestTimeTooSkewedError,
"TargetNameExist": TargetNameExistError,
"TargetQuotaReached": TargetQuotaReachedError,
"TargetStatusNotSuccess": TargetStatusNotSuccessError,
"TargetStatusProcessing": TargetStatusProcessingError,
"UnknownTarget": UnknownTargetError,
}[result_code]
raise exception(response=response)
def raise_for_vumark_result_code(
result_code: str, response: Response
) -> NoReturn:
"""Raise the appropriate VuMark exception for the given result
code.
"""
exception = {
"AuthenticationFailure": AuthenticationFailureError,
"BadRequest": BadRequestError,
"DateRangeError": DateRangeError,
"Fail": FailError,
"InvalidAcceptHeader": InvalidAcceptHeaderError,
"InvalidInstanceId": InvalidInstanceIdError,
"InvalidTargetType": InvalidTargetTypeError,
"RequestTimeTooSkewed": RequestTimeTooSkewedError,
"TargetStatusNotSuccess": TargetStatusNotSuccessError,
"UnknownTarget": UnknownTargetError,
}[result_code]
raise exception(response=response)
def build_add_target_content(
*,
name: str,
width: float,
image: ImageType,
active_flag: bool,
application_metadata: str | None,
) -> bytes:
"""Build the request body for an add_target request."""
image_data = get_image_data(image=image)
image_data_encoded = base64.b64encode(s=image_data).decode(
encoding="ascii",
)
data = {
"name": name,
"width": width,
"image": image_data_encoded,
"active_flag": active_flag,
"application_metadata": application_metadata,
}
return json.dumps(obj=data).encode(encoding="utf-8")
def build_update_target_content(
*,
name: str | None,
width: float | None,
image: ImageType | None,
active_flag: bool | None,
application_metadata: str | None,
) -> bytes:
"""Build the request body for an update_target request."""
data: dict[str, str | bool | float | int] = {}
if name is not None:
data["name"] = name
if width is not None:
data["width"] = width
if image is not None:
image_data = get_image_data(image=image)
image_data_encoded = base64.b64encode(s=image_data).decode(
encoding="ascii",
)
data["image"] = image_data_encoded
if active_flag is not None:
data["active_flag"] = active_flag
if application_metadata is not None:
data["application_metadata"] = application_metadata
return json.dumps(obj=data).encode(encoding="utf-8")