Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
upload.rs 1.32 KiB
Newer Older
Pierre Jarriges's avatar
Pierre Jarriges committed
#[derive(Debug, PartialEq)]
pub enum UploadFileType {
    Image,
    Sound,
    Video,
    Doc,
    Code,
}

pub struct UploadFileData {
    pub up_type: UploadFileType,
    pub filename: String,
}

pub fn dirname_from_type(upload_type: &UploadFileType) -> String {
    match upload_type {
        UploadFileType::Image => String::from("images"),
        UploadFileType::Sound => String::from("sounds"),
        UploadFileType::Video => String::from("videos"),
        UploadFileType::Doc => String::from("docs"),
        UploadFileType::Code => String::from("source_code"),
    }
}

pub fn upload_type_from_file_ext(ext: &String) -> UploadFileType {
    match &ext[..] {
        "webp" | "jpg" | "png" | "jpeg" | "bmp" | "gif" => UploadFileType::Image,
        "mp3" | "ogg" | "wav" | "opus" => UploadFileType::Sound,
        "mp4" | "webm" | "ogv" => UploadFileType::Video,
        "js" | "css" | "html" => UploadFileType::Code,
        _ => UploadFileType::Doc,
    }
}

pub fn file_ext(file_name: &String) -> Result<String, String> {
    let parts = file_name.split(".").collect::<Vec<&str>>();

    let err_msg = format!("Couldn't get extension from filename : {}", file_name);

    if parts.len() < 2 {
        return Err(err_msg);
    }

    match parts.last() {
        Some(ext) => Ok(ext.to_string()),
        None => Err(err_msg),
    }
}