Can upload ISO files
This commit is contained in:
49
virtweb_backend/src/utils/files_utils.rs
Normal file
49
virtweb_backend/src/utils/files_utils.rs
Normal file
@ -0,0 +1,49 @@
|
||||
use std::path::PathBuf;
|
||||
|
||||
const INVALID_CHARS: [&str; 19] = [
|
||||
"@", "\\", "/", ":", ",", "<", ">", "%", "'", "\"", "?", "{", "}", "$", "*", "|", ";", "=",
|
||||
"\t",
|
||||
];
|
||||
|
||||
/// Check out whether a file name is valid or not
|
||||
pub fn check_file_name(name: &str) -> bool {
|
||||
!name.is_empty() && !INVALID_CHARS.iter().any(|c| name.contains(c))
|
||||
}
|
||||
|
||||
/// Create directory if missing
|
||||
pub fn create_directory_if_missing(path: &PathBuf) -> anyhow::Result<()> {
|
||||
if !path.exists() {
|
||||
std::fs::create_dir_all(path)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::utils::files_utils::check_file_name;
|
||||
|
||||
#[test]
|
||||
fn empty_file_name() {
|
||||
assert!(!check_file_name(""));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parent_dir_file_name() {
|
||||
assert!(!check_file_name("../file.test"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn windows_parent_dir_file_name() {
|
||||
assert!(!check_file_name("..\\test.fr"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn special_char_file_name() {
|
||||
assert!(!check_file_name("test:test.@"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn valid_file_name() {
|
||||
assert!(check_file_name("test.iso"));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user