diff --git a/src/upload.rs b/src/upload.rs index b016f6a..1630a89 100644 --- a/src/upload.rs +++ b/src/upload.rs @@ -1,4 +1,4 @@ -use std::{collections::HashSet, fs::File, io::Write, path::Path, path::Component}; +use std::{collections::HashSet, fs::File, io::Write, path::Component, path::Path}; use actix::{fut::future::ActorFutureExt, Actor, ActorContext, AsyncContext, StreamHandler}; use actix_http::ws::{CloseReason, Item}; @@ -30,28 +30,32 @@ fn sanitise_path_component(name: &str, extension_length: usize) -> String { sanitise_with_options( &name, &SanOptions { - length_limit: SanOptions::DEFAULT.length_limit.saturating_sub(extension_length), + length_limit: SanOptions::DEFAULT + .length_limit + .saturating_sub(extension_length), ..SanOptions::DEFAULT }, ) } fn sanitise_path(path: &str) -> String { - let mut san_path = Path::new(path).components().rfold(String::new(), |subpath, c| { - if subpath.len() >= SanOptions::DEFAULT.length_limit*8 { - return subpath; - } - if let Component::Normal(s) = c { - let mut component = sanitise_path_component(&s.to_string_lossy(), 0); - if !subpath.is_empty() { - component.push('/'); - component.push_str(&subpath); + let mut san_path = Path::new(path) + .components() + .rfold(String::new(), |subpath, c| { + if subpath.len() >= SanOptions::DEFAULT.length_limit * 8 { + return subpath; } - component - } else { - subpath - } - }); + if let Component::Normal(s) = c { + let mut component = sanitise_path_component(&s.to_string_lossy(), 0); + if !subpath.is_empty() { + component.push('/'); + component.push_str(&subpath); + } + component + } else { + subpath + } + }); if san_path.is_empty() { san_path.push('_'); } @@ -306,8 +310,9 @@ impl Uploader { if files.len() > 1 { info!("Wrapping in zipfile generator"); let now = OffsetDateTime::now_utc(); - let collection_name = - collection_name.map(|f| sanitise_path_component(&f, 4)).unwrap_or_else(|| { + let collection_name = collection_name + .map(|f| sanitise_path_component(&f, 4)) + .unwrap_or_else(|| { super::APP_NAME.to_owned() + &now.format(FILENAME_DATE_FORMAT).unwrap() });