import sharp, { Sharp } from "sharp";

 /**
     * @function
     * @name processingImage
     * @description Function for processing the image and necessary adjustments
     * @param { Sharp } image 
     * @param { string } uuid 
     * @param { number } resizeFile 
     */
export const processingImageService = (data: Buffer, resizeFile: number = 1024): Promise<Buffer> => {                 
    return  new Promise(async (resolve, reject) => {
        try {
            const image = sharp(data);
            const metadata:any = await image.metadata();                      
           
            switch(metadata.format) {
                case "jpeg" || "jpg": {                
                    image.jpeg({ mozjpeg: true });
                    break;
                }
                default: {                       
                    image.png({ palette: true, compressionLevel: 6, quality: 90 });                
                }
            }       

            if(metadata.width > resizeFile) image.resize(resizeFile);
    
            const buffer:Buffer = await image.toBuffer();
            resolve(<Buffer> buffer);                        
        } catch (error) {
            console.log('Error en aws:', error);    
            reject(error);
        }        
    })
}   