2022-04-30 19:26:09 +00:00
|
|
|
use std::fs::{
|
|
|
|
set_permissions,
|
|
|
|
File,
|
|
|
|
Permissions,
|
|
|
|
};
|
2022-08-18 21:01:35 +00:00
|
|
|
use std::io::Error;
|
2021-04-09 00:22:17 +00:00
|
|
|
use std::io::prelude::*;
|
2022-04-30 19:26:09 +00:00
|
|
|
use std::os::unix::fs::PermissionsExt;
|
2021-11-13 17:37:31 +00:00
|
|
|
use std::path::Path;
|
2021-04-09 00:22:17 +00:00
|
|
|
|
|
|
|
use mime_guess::get_mime_extensions_str;
|
|
|
|
use mime_sniffer::MimeTypeSniffer;
|
2023-01-06 01:50:30 +00:00
|
|
|
|
2022-08-18 21:01:35 +00:00
|
|
|
pub fn sniff_media_type(data: &[u8]) -> Option<String> {
|
2021-12-29 13:57:57 +00:00
|
|
|
data.sniff_mime_type().map(|val| val.to_string())
|
|
|
|
}
|
|
|
|
|
2023-02-12 18:54:29 +00:00
|
|
|
pub fn get_media_type_extension(media_type: &str) -> Option<String> {
|
|
|
|
get_mime_extensions_str(media_type)
|
|
|
|
.and_then(|extensions| extensions.first())
|
|
|
|
.map(|extension| extension.to_string())
|
2021-12-29 14:34:22 +00:00
|
|
|
}
|
|
|
|
|
2022-08-18 21:01:35 +00:00
|
|
|
pub fn write_file(data: &[u8], file_path: &Path) -> Result<(), Error> {
|
2021-12-29 14:34:22 +00:00
|
|
|
let mut file = File::create(file_path)?;
|
2022-04-30 19:26:09 +00:00
|
|
|
file.write_all(data)?;
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2022-08-18 21:01:35 +00:00
|
|
|
pub fn set_file_permissions(file_path: &Path, mode: u32) -> Result<(), Error> {
|
2022-04-30 19:26:09 +00:00
|
|
|
let permissions = Permissions::from_mode(mode);
|
|
|
|
set_permissions(file_path, permissions)?;
|
2021-12-29 14:34:22 +00:00
|
|
|
Ok(())
|
|
|
|
}
|