diff --git a/src/transfer.rs b/src/transfer.rs index 90d7d03..8776fe7 100644 --- a/src/transfer.rs +++ b/src/transfer.rs @@ -251,6 +251,14 @@ pub async fn handle_prepare_upload( .into_response() } +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct UploadParams { + session_id: String, + file_id: String, + token: String, +} + pub async fn handle_receive_upload( Query(params): Query, State(service): State, @@ -316,13 +324,10 @@ pub async fn handle_receive_upload( StatusCode::OK.into_response() } -// Query parameters struct #[derive(Deserialize)] #[serde(rename_all = "camelCase")] -pub struct UploadParams { +pub struct CancelParams { session_id: String, - file_id: String, - token: String, } pub async fn handle_cancel( @@ -358,30 +363,27 @@ pub async fn handle_cancel( } } -// Cancel parameters struct -#[derive(Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct CancelParams { - session_id: String, -} - // free function that can be called inside a future in tokio::task::spawn() async fn do_send_bytes( sessions: Sessions, client: Client, session_id: &str, content_id: &str, - token: &String, + token: &str, body: Bytes, ) -> Result<()> { - let sessions = sessions.read().await; - let session = sessions.get(session_id).unwrap(); + let session = sessions + .read() + .await + .get(session_id) + .cloned() + .ok_or(LocalSendError::SessionNotFound)?; if session.status != SessionStatus::Active { return Err(LocalSendError::SessionInactive); } - if session.file_tokens.get(content_id) != Some(token) { + if session.file_tokens.get(content_id).map(|t| t.as_str()) != Some(token) { return Err(LocalSendError::InvalidToken); } @@ -395,11 +397,11 @@ async fn do_send_bytes( let response = request.send().await?; if response.status() != 200 { - log::trace!("non-200 remote response: {response:?}"); - return Err(LocalSendError::UploadFailed); + log::warn!("non-200 remote response: {response:?}"); + Err(LocalSendError::UploadFailed) + } else { + Ok(()) } - - Ok(()) } // free function that can be called inside a future in tokio::task::spawn()