parent
8cde63383e
commit
cbb8025a0c
|
@ -18,33 +18,29 @@ pub fn parse_file_path(requested_path: &str) -> (String, u32, String) {
|
|||
if requested_path.ends_with("/webp") {
|
||||
path = path.replace("/webp", "");
|
||||
}
|
||||
let mut path_parts: Vec<&str> = path.split('/').collect();
|
||||
|
||||
let path_parts: Vec<&str> = path.split('/').collect();
|
||||
let mut extension = String::new();
|
||||
let mut width = 0;
|
||||
let mut base_filename = String::new();
|
||||
|
||||
if path_parts.is_empty() {
|
||||
return (path.to_string(), width, extension);
|
||||
}
|
||||
|
||||
// пытаемся извлечь формат из имени файла
|
||||
if let Some(filename_part) = path_parts.pop() {
|
||||
if let Some((base, ext_part)) = filename_part.rsplit_once('.') {
|
||||
extension = ext_part.to_string();
|
||||
base_filename = base.to_string(); // Устанавливаем base_filename без расширения
|
||||
// Получаем последнюю часть пути (имя файла)
|
||||
if let Some(last_part) = path_parts.last() {
|
||||
// Разделяем имя файла и расширение
|
||||
if let Some((name, ext)) = last_part.rsplit_once('.') {
|
||||
extension = ext.to_string();
|
||||
base_filename = name.to_string();
|
||||
} else {
|
||||
base_filename = filename_part.to_string();
|
||||
base_filename = last_part.to_string();
|
||||
}
|
||||
}
|
||||
|
||||
// Если base_filename ещё не установлено, извлекаем его
|
||||
if base_filename.is_empty() {
|
||||
if let Some(filename_part) = path_parts.pop() {
|
||||
if let Some((base, ext_part)) = filename_part.rsplit_once('.') {
|
||||
extension = ext_part.to_string();
|
||||
base_filename = base.to_string();
|
||||
} else {
|
||||
base_filename = filename_part.to_string();
|
||||
// Проверяем наличие ширины в пути
|
||||
for part in path_parts.iter() {
|
||||
if part.ends_with('x') {
|
||||
if let Ok(w) = part.trim_end_matches('x').parse::<u32>() {
|
||||
width = w;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -68,6 +64,21 @@ pub fn parse_file_path(requested_path: &str) -> (String, u32, String) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Если ширина не найдена в пути, проверяем имя файла
|
||||
if width == 0 {
|
||||
if let Some((name, width_str)) = base_filename.rsplit_once('_') {
|
||||
if let Ok(w) = width_str.parse::<u32>() {
|
||||
width = w;
|
||||
base_filename = name.to_string();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Очищаем base_filename от возможных префиксов пути
|
||||
if let Some(uuid) = base_filename.split('/').last() {
|
||||
base_filename = uuid.to_string();
|
||||
}
|
||||
|
||||
(base_filename, width, extension)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user