diff --git a/src/handlers/proxy.rs b/src/handlers/proxy.rs index 2ec9b0a..67ae49c 100644 --- a/src/handlers/proxy.rs +++ b/src/handlers/proxy.rs @@ -129,7 +129,6 @@ pub async fn proxy_handler( Err(ErrorInternalServerError("invalid file key")) } - async fn thumbdata_save( original_data: Vec, state: &AppState, @@ -138,24 +137,45 @@ async fn thumbdata_save( ) { let state = state.clone(); if content_type.starts_with("image") { - let (filename, _, ext) = parse_image_request(&original_filename).unwrap(); - let img = image::load_from_memory(&original_data).unwrap(); + let filename = original_filename.to_string(); + let ext = match filename.split('.').last() { + Some(ext) => ext.to_string(), + None => "".to_string(), + }; + + warn!("file extension: {}", ext); + + let img = match image::load_from_memory(&original_data) { + Ok(img) => img, + Err(e) => { + warn!("cannot load image from memory: {}", e); + return; + } + }; + actix::spawn(async move { - if let Ok(thumbnails_bytes) = generate_thumbnails(&img).await { - for (thumb_width, thumbnail) in thumbnails_bytes { - let thumb_filename = format!("{}_{}.{}", filename, thumb_width, ext); - // Загружаем миниатюру в S3 - let _ = upload_to_s3( - &state.storj_client, - &state.bucket, - &thumb_filename, - thumbnail, - &content_type, - ).await; - warn!("thumb {} uploaded to storj", thumb_filename); + match generate_thumbnails(&img).await { + Ok(thumbnails_bytes) => { + for (thumb_width, thumbnail) in thumbnails_bytes { + let thumb_filename = format!("{}_{}.{}", filename, thumb_width, ext); + // Загружаем миниатюру в S3 + if let Err(e) = upload_to_s3( + &state.storj_client, + &state.bucket, + &thumb_filename, + thumbnail, + &content_type, + ) + .await + { + warn!("cannot load thumb {}: {}", thumb_filename, e); + } + } + } + Err(e) => { + warn!("cannot generate thumbnails for {}: {}", filename, e); } - warn!("[ok] all thumbnails uploaded to storj for {}", filename); } }); } -} +} \ No newline at end of file