2024-02-26 21:43:30 +00:00
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
|
|
use uuid::Uuid;
|
|
|
|
|
2024-03-02 18:20:50 +00:00
|
|
|
fn add_extension(filename: String, extension: Option<&str>) -> String {
|
|
|
|
if let Some(extension) = extension {
|
|
|
|
filename + extension
|
|
|
|
} else {
|
|
|
|
filename
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub(crate) fn generate_disk(mut path: PathBuf, extension: Option<&str>) -> PathBuf {
|
|
|
|
let (directories, filename) = generate();
|
|
|
|
path.extend(directories);
|
|
|
|
path.push(add_extension(filename, extension));
|
2024-02-26 21:43:30 +00:00
|
|
|
path
|
|
|
|
}
|
|
|
|
|
2024-03-02 18:20:50 +00:00
|
|
|
pub(crate) fn generate_object(extension: Option<&str>) -> String {
|
|
|
|
let (directories, filename) = generate();
|
|
|
|
|
|
|
|
format!(
|
|
|
|
"{}/{}",
|
|
|
|
directories.join("/"),
|
|
|
|
add_extension(filename, extension)
|
|
|
|
)
|
2024-02-26 21:43:30 +00:00
|
|
|
}
|
|
|
|
|
2024-03-02 18:20:50 +00:00
|
|
|
fn generate() -> (Vec<String>, String) {
|
2024-02-26 21:58:06 +00:00
|
|
|
let s = Uuid::now_v7().simple().to_string();
|
2024-02-26 21:43:30 +00:00
|
|
|
|
2024-03-02 18:20:50 +00:00
|
|
|
let directories = (0..10).map(|i| s[i * 2..i * 2 + 2].to_string()).collect();
|
|
|
|
let filename = s[20..].to_string();
|
|
|
|
|
|
|
|
(directories, filename)
|
2024-02-26 21:43:30 +00:00
|
|
|
}
|