File tree Expand file tree Collapse file tree 2 files changed +29
-0
lines changed
src/mock_vws/_services_validators Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change 29
29
validate_image_data_type ,
30
30
validate_image_encoding ,
31
31
validate_image_format ,
32
+ validate_image_integrity ,
32
33
validate_image_is_image ,
33
34
validate_image_size ,
34
35
)
@@ -122,6 +123,7 @@ def run_services_validators(
122
123
validate_image_format (request_body = request_body )
123
124
validate_image_color_space (request_body = request_body )
124
125
validate_image_size (request_body = request_body )
126
+ validate_image_integrity (request_body = request_body )
125
127
126
128
validate_name_type (request_body = request_body )
127
129
validate_name_length (request_body = request_body )
Original file line number Diff line number Diff line change 21
21
_LOGGER = logging .getLogger (name = __name__ )
22
22
23
23
24
+ @beartype
25
+ def validate_image_integrity (* , request_body : bytes ) -> None :
26
+ """Validate the integrity of the image given to a VWS endpoint.
27
+
28
+ Args:
29
+ request_body: The body of the request.
30
+
31
+ Raises:
32
+ BadImageError: The image is given and is not a valid image file.
33
+ """
34
+ if not request_body :
35
+ return
36
+
37
+ request_text = request_body .decode ()
38
+ image = json .loads (s = request_text ).get ("image" )
39
+ decoded = decode_base64 (encoded_data = image )
40
+
41
+ image_file = io .BytesIO (initial_bytes = decoded )
42
+ pil_image = Image .open (fp = image_file )
43
+
44
+ try :
45
+ pil_image .verify ()
46
+ except SyntaxError as exc :
47
+ _LOGGER .warning (msg = "The image is not a valid image file." )
48
+ raise BadImageError from exc
49
+
50
+
24
51
@beartype
25
52
def validate_image_format (* , request_body : bytes ) -> None :
26
53
"""Validate the format of the image given to a VWS endpoint.
You can’t perform that action at this time.
0 commit comments