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") {
|
if requested_path.ends_with("/webp") {
|
||||||
path = path.replace("/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 extension = String::new();
|
||||||
let mut width = 0;
|
let mut width = 0;
|
||||||
let mut base_filename = String::new();
|
let mut base_filename = String::new();
|
||||||
|
|
||||||
if path_parts.is_empty() {
|
// Получаем последнюю часть пути (имя файла)
|
||||||
return (path.to_string(), width, extension);
|
if let Some(last_part) = path_parts.last() {
|
||||||
}
|
// Разделяем имя файла и расширение
|
||||||
|
if let Some((name, ext)) = last_part.rsplit_once('.') {
|
||||||
// пытаемся извлечь формат из имени файла
|
extension = ext.to_string();
|
||||||
if let Some(filename_part) = path_parts.pop() {
|
base_filename = name.to_string();
|
||||||
if let Some((base, ext_part)) = filename_part.rsplit_once('.') {
|
|
||||||
extension = ext_part.to_string();
|
|
||||||
base_filename = base.to_string(); // Устанавливаем base_filename без расширения
|
|
||||||
} else {
|
} else {
|
||||||
base_filename = filename_part.to_string();
|
base_filename = last_part.to_string();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Если base_filename ещё не установлено, извлекаем его
|
// Проверяем наличие ширины в пути
|
||||||
if base_filename.is_empty() {
|
for part in path_parts.iter() {
|
||||||
if let Some(filename_part) = path_parts.pop() {
|
if part.ends_with('x') {
|
||||||
if let Some((base, ext_part)) = filename_part.rsplit_once('.') {
|
if let Ok(w) = part.trim_end_matches('x').parse::<u32>() {
|
||||||
extension = ext_part.to_string();
|
width = w;
|
||||||
base_filename = base.to_string();
|
break;
|
||||||
} else {
|
|
||||||
base_filename = filename_part.to_string();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
(base_filename, width, extension)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user