Files
managarr/src/utils.rs

72 lines
1.6 KiB
Rust

use log::LevelFilter;
use log4rs::append::file::FileAppender;
use log4rs::config::{Appender, Root};
use log4rs::encode::pattern::PatternEncoder;
use regex::Regex;
pub fn init_logging_config() -> log4rs::Config {
let file_path = "/tmp/managarr.log";
let logfile = FileAppender::builder()
.encoder(Box::new(PatternEncoder::new(
"{h({d(%Y-%m-%d %H:%M:%S)(utc)} - {l}: {m}{n})}",
)))
.build(file_path)
.unwrap();
log4rs::Config::builder()
.appender(Appender::builder().build("logfile", Box::new(logfile)))
.build(
Root::builder()
.appender("logfile")
.build(LevelFilter::Debug),
)
.unwrap()
}
pub fn convert_to_gb(bytes: u64) -> f64 {
bytes as f64 / 1024f64.powi(3)
}
pub fn convert_runtime(runtime: u64) -> (u64, u64) {
let hours = runtime / 60;
let minutes = runtime % 60;
(hours, minutes)
}
pub fn strip_non_alphanumeric_characters(input: &str) -> String {
Regex::new(r"[^a-zA-Z0-9\s]")
.unwrap()
.replace_all(&input.to_lowercase(), "")
.to_string()
}
#[cfg(test)]
mod tests {
use pretty_assertions::assert_eq;
use crate::utils::{convert_runtime, convert_to_gb, strip_non_alphanumeric_characters};
#[test]
fn test_convert_to_gb() {
assert_eq!(convert_to_gb(2147483648), 2f64);
assert_eq!(convert_to_gb(2662879723), 2.4799999995157123);
}
#[test]
fn test_convert_runtime() {
let (hours, minutes) = convert_runtime(154);
assert_eq!(hours, 2);
assert_eq!(minutes, 34);
}
#[test]
fn test_strop_non_alphanumeric_characters() {
assert_eq!(
strip_non_alphanumeric_characters("Te$t S7r!ng::'~-_}"),
"tet s7rng".to_owned()
)
}
}