"""Definition of put_image function.""" import logging import os from hashlib import md5 from io import BytesIO from minio import Minio from PIL import Image from .put import put def put_image( client: Minio, image: Image.Image, ) -> str: """Put image in image subfolder in bucket in Minio and return MD5 checksum used as object name.""" assert isinstance(client, Minio) assert isinstance(image, Image.Image) # get bucket name from env bucket_name = os.getenv('MINIO_BUCKET_NAME', default='') assert len(bucket_name) > 0 # save data to buffer buffer = BytesIO() image.save(buffer, 'png') # get md5 of buffer checksum = md5(buffer.getbuffer()).hexdigest() # set object name object_name = f'images/{checksum}' # send data to bucket put( client=client, buffer=buffer, bucket_name=bucket_name, object_name=object_name, ) logging.debug('finished') return checksum