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 2929 validate_image_data_type ,
3030 validate_image_encoding ,
3131 validate_image_format ,
32+ validate_image_integrity ,
3233 validate_image_is_image ,
3334 validate_image_size ,
3435)
@@ -122,6 +123,7 @@ def run_services_validators(
122123 validate_image_format (request_body = request_body )
123124 validate_image_color_space (request_body = request_body )
124125 validate_image_size (request_body = request_body )
126+ validate_image_integrity (request_body = request_body )
125127
126128 validate_name_type (request_body = request_body )
127129 validate_name_length (request_body = request_body )
Original file line number Diff line number Diff line change 2121_LOGGER = logging .getLogger (name = __name__ )
2222
2323
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+
2451@beartype
2552def validate_image_format (* , request_body : bytes ) -> None :
2653 """Validate the format of the image given to a VWS endpoint.
You can’t perform that action at this time.
0 commit comments