From d71b86a81ea778742c0f06c2cd206f06e6d4c002 Mon Sep 17 00:00:00 2001 From: asonix Date: Sun, 7 Jun 2020 11:34:44 -0500 Subject: [PATCH] Put image crate actions behind web::block --- src/upload_manager.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/upload_manager.rs b/src/upload_manager.rs index 406ee82..fa243ea 100644 --- a/src/upload_manager.rs +++ b/src/upload_manager.rs @@ -191,10 +191,13 @@ impl UploadManager { let bytes = bytes.freeze(); // -- VALIDATE IMAGE -- - let format = image::guess_format(&bytes).map_err(UploadError::InvalidImage)?; - let img = image::load_from_memory(&bytes).map_err(UploadError::InvalidImage)?; + web::block(move || { + let format = image::guess_format(&bytes).map_err(UploadError::InvalidImage)?; + let img = image::load_from_memory(&bytes).map_err(UploadError::InvalidImage)?; - (img, format) + Ok((img, format)) as Result<(image::DynamicImage, image::ImageFormat), UploadError> + }) + .await? }; let (format, content_type) = self @@ -208,11 +211,12 @@ impl UploadManager { return Err(UploadError::ContentType(content_type)); } - let bytes: bytes::Bytes = { + let bytes: bytes::Bytes = web::block(move || { let mut bytes = std::io::Cursor::new(vec![]); img.write_to(&mut bytes, format)?; - bytes::Bytes::from(bytes.into_inner()) - }; + Ok(bytes::Bytes::from(bytes.into_inner())) as Result + }) + .await?; // -- DUPLICATE CHECKS --