thumbfix7

This commit is contained in:
2024-11-07 21:22:34 +03:00
parent 8cde63383e
commit 30f591a34e
2 changed files with 19 additions and 19 deletions

View File

@@ -73,23 +73,25 @@ pub async fn proxy_handler(
return serve_file(thumb_filename, &state, shout_id).await;
},
Ok(false) => {
// Миниатюра не существует, создаем и загружаем её
if let Ok(filedata) = load_file_from_s3(&state.storj_client, &state.bucket, &stored_path).await {
warn!("generate new thumb files: {}", stored_path);
warn!("{} bytes", filedata.len());
// Миниатюра не существует, возвращаем оригинал и запускаем генерацию миниатюры
let original_file = serve_file(&stored_path, &state, shout_id).await?;
// Запускаем асинхронную задачу для генерации миниатюры
let state_clone = state.clone();
let stored_path_clone = stored_path.clone();
let filekey_clone = filekey.clone();
let content_type_clone = content_type.to_string();
// Генерируем миниатюру и сохраняем
if let Ok(_) = thumbdata_save(filedata.clone(), &state, &filekey, content_type.to_string()).await {
warn!("serve new thumb file: {}", thumb_filename);
return serve_file(thumb_filename, &state, shout_id).await;
} else {
error!("cannot generate thumbnail");
return Err(ErrorInternalServerError("cannot generate thumbnail"));
actix_web::rt::spawn(async move {
if let Ok(filedata) = load_file_from_s3(&state_clone.storj_client, &state_clone.bucket, &stored_path_clone).await {
warn!("generate new thumb files: {}", stored_path_clone);
if let Err(e) = thumbdata_save(filedata, &state_clone, &filekey_clone, content_type_clone).await {
error!("Failed to generate thumbnail: {}", e);
}
}
} else {
error!("cannot load file from Storj to generate thumbnail");
return Err(ErrorInternalServerError("cannot generate thumbnail"));
}
});
return Ok(original_file);
}
Err(e) => {
error!("ошибка при проверке существования миниатюры: {}", e);