warlocks_cauldron/providers/
file.rs1use regex::Regex;
2
3use super::dependencies::*;
4use crate::Text;
5
6
7pub struct File;
9
10impl File {
11 pub fn extension(file_type: Option<FileType>) -> &'static str {
16 let ftype = validate_enum(file_type, None);
17 get_random_element(EXTENSIONS.get(ftype).expect("Cant find file_type extensions!").iter())
18 }
19
20 pub fn mime_type(mime_type: Option<MimeType>) -> &'static str {
25 let mtype = validate_enum(mime_type, None);
26 get_random_element(MIME_TYPES.get(mtype).expect("Cant find mime_type!").iter())
27 }
28
29 pub fn size(minimum: i32, maximum: i32) -> String {
35 format!("{} {}", randint(minimum, maximum),
36 get_random_element(vec!["bytes", "kB", "MB", "GB", "TB"].into_iter()))
37 }
38
39 pub fn file_name(file_type: Option<FileType>) -> String {
44 let replacer = get_random_element(vec!["_", "-"].into_iter());
45 let word = Text(&Locale::EN).word().trim();
46
47 let re = Regex::new(r"\s+").unwrap();
48 let name = re.replace_all(word, replacer);
49 let ext = Self::extension(file_type);
50
51 format!("{name}{ext}")
52 }
53}