fix-thumb1
Some checks failed
deploy / deploy (push) Failing after 5s

This commit is contained in:
Untone 2024-11-02 04:59:14 +03:00
parent 8cde63383e
commit cbb8025a0c

View File

@ -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)
}