From b0e2129cf49aec998c1c5398b4c307d4ec81d797 Mon Sep 17 00:00:00 2001 From: EETagent Date: Mon, 14 Nov 2022 22:02:11 +0100 Subject: [PATCH] fix: rebasing fixes --- core/src/error.rs | 7 +++++++ core/src/services/candidate_service.rs | 28 +++++++++----------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/core/src/error.rs b/core/src/error.rs index cb7c05a..5aebb06 100644 --- a/core/src/error.rs +++ b/core/src/error.rs @@ -54,6 +54,10 @@ pub enum ServiceError { ArgonHashError(#[from] argon2::password_hash::Error), #[error("AES error")] AesError(#[from] aes_gcm_siv::Error), + #[error("Portfolio is incomplete")] + IncompletePortfolio, + #[error("Zip error")] + ZipError(#[from] async_zip::error::ZipError) } impl ServiceError { @@ -84,6 +88,9 @@ impl ServiceError { ServiceError::TokioJoinError(_) => 500, ServiceError::AesError(_) => 500, ServiceError::ArgonConfigError(_) => 500, + //TODO: Correct code + ServiceError::IncompletePortfolio => 500, + ServiceError::ZipError(_) => 500, } } } diff --git a/core/src/services/candidate_service.rs b/core/src/services/candidate_service.rs index 7b20b00..2b4ef36 100644 --- a/core/src/services/candidate_service.rs +++ b/core/src/services/candidate_service.rs @@ -146,39 +146,32 @@ impl CandidateService { return Err(ServiceError::IncompletePortfolio); } - let archive = tokio::fs::File::create(path.join("PORTFOLIO.zip")).await; - - let Ok(mut archive) = archive else { - return Err(ServiceError::FileCreationError); - }; + let mut archive = tokio::fs::File::create(path.join("PORTFOLIO.zip")).await?; + let mut writer = async_zip::write::ZipFileWriter::new(&mut archive); for entry in vec!["MOTIVACNI_DOPIS.pdf", "PORTFOLIO.pdf", "PORTFOLIO.zip"] { let mut entry_file = tokio::fs::File::open(cache_path.join(entry)) - .await - .map_err(|_| ServiceError::FileOpenError)?; + .await?; let mut contents = vec![]; entry_file .read_to_end(&mut contents) - .await - .map_err(|_| ServiceError::FileReadError)?; + .await?; let builder = async_zip::ZipEntryBuilder::new(entry.to_string(), async_zip::Compression::Deflate); let mut entry_writer = writer .write_entry_stream(builder) - .await - .map_err(|_| ServiceError::FileWriteError)?; + .await?; // TODO: write_all_buf? entry_writer .write_all(&mut contents) - .await - .map_err(|_| ServiceError::FileWriteError)?; + .await?; } // TODO: Ne unwrap @@ -186,12 +179,10 @@ impl CandidateService { archive.shutdown().await.unwrap(); let admin_public_keys = Query::get_all_admin_public_keys(db) - .await - .map_err(|_| ServiceError::DbError)?; + .await?; let candidate = Query::find_candidate_by_id(db, candidate_id) - .await - .map_err(|_| ServiceError::DbError)?; + .await?; let Some(candidate) = candidate else { return Err(ServiceError::CandidateNotFound); @@ -220,8 +211,7 @@ impl CandidateService { pub async fn get_portfolio(candidate_id: i32, db: &DbConn) -> Result, ServiceError> { let candidate = Query::find_candidate_by_id(db, candidate_id) - .await - .map_err(|_| ServiceError::DbError)?; + .await?; let Some(candidate) = candidate else { return Err(ServiceError::CandidateNotFound);