Browse Source

Extract extension from 2-segment URL paths for image operations

Go's parseURLPath extracts the file extension from all URL formats
including 2-segment paths like /vid,fid.jpg. The Rust version only
handled 3-segment paths (/vid/fid/filename.ext), so extensions in
2-segment paths were lost. This caused image resize/crop operations
requested via query params to be silently skipped for those paths.
rust-volume-server
Chris Lu 4 days ago
parent
commit
b869d2603c
  1. 8
      seaweed-volume/src/server/handlers.rs

8
seaweed-volume/src/server/handlers.rs

@ -1704,10 +1704,18 @@ fn is_image_crop_ext(ext: &str) -> bool {
fn extract_extension_from_path(path: &str) -> String {
let parts: Vec<&str> = path.trim_start_matches('/').split('/').collect();
if parts.len() >= 3 {
// 3-segment path: /vid/fid/filename.ext
let filename = parts[2];
if let Some(dot_pos) = filename.rfind('.') {
return filename[dot_pos..].to_lowercase();
}
} else if parts.len() >= 1 {
// 2-segment path: /vid,fid.ext or /vid/fid.ext
// Go's parseURLPath extracts ext from the full path for all formats
let last = parts[parts.len() - 1];
if let Some(dot_pos) = last.rfind('.') {
return last[dot_pos..].to_lowercase();
}
}
String::new()
}

Loading…
Cancel
Save