You've already forked AstralRinth
forked from didirus/AstralRinth
* typos :help_me: * (part 1/?) massive cleanup to make the code more Rust-ic and cut down heap allocations. * (part 2/?) massive cleanup to make the code more Rust-ic and cut down heap allocations. * (part 3/?) cut down some pretty major heap allocations here - more Bytes and BytesMuts, less Vec<u8>s also I don't really understand why you need to `to_vec` when you don't really use it again afterwards * (part 4/?) deduplicate error handling in backblaze logic * (part 5/?) fixes, cleanups, refactors, and reformatting * (part 6/?) cleanups and refactors * remove loads of `as_str` in types that already are `Display` * Revert "remove loads of `as_str` in types that already are `Display`" This reverts commit 4f974310cfb167ceba03001d81388db4f0fbb509. * reformat and move routes util to the util module * use streams * Run prepare + formatting issues Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
56 lines
2.0 KiB
Rust
56 lines
2.0 KiB
Rust
use lazy_static::lazy_static;
|
|
use regex::Regex;
|
|
use validator::{ValidationErrors, ValidationErrorsKind};
|
|
|
|
lazy_static! {
|
|
pub static ref RE_URL_SAFE: Regex = Regex::new(r#"^[a-zA-Z0-9!@$()`.+,_"-]*$"#).unwrap();
|
|
}
|
|
|
|
//TODO: In order to ensure readability, only the first error is printed, this may need to be expanded on in the future!
|
|
pub fn validation_errors_to_string(errors: ValidationErrors, adder: Option<String>) -> String {
|
|
let mut output = String::new();
|
|
|
|
let map = errors.into_errors();
|
|
|
|
let key_option = map.keys().next().copied();
|
|
|
|
if let Some(field) = key_option {
|
|
if let Some(error) = map.get(field) {
|
|
return match error {
|
|
ValidationErrorsKind::Struct(errors) => {
|
|
validation_errors_to_string(*errors.clone(), Some(format!("of item {}", field)))
|
|
}
|
|
ValidationErrorsKind::List(list) => {
|
|
if let Some(errors) = list.get(&0) {
|
|
output.push_str(&*validation_errors_to_string(
|
|
*errors.clone(),
|
|
Some(format!("of list {} with index 0", field)),
|
|
));
|
|
}
|
|
|
|
output
|
|
}
|
|
ValidationErrorsKind::Field(errors) => {
|
|
if let Some(error) = errors.get(0) {
|
|
if let Some(adder) = adder {
|
|
output.push_str(&*format!(
|
|
"Field {} {} failed validation with error {}",
|
|
field, adder, error.code
|
|
));
|
|
} else {
|
|
output.push_str(&*format!(
|
|
"Field {} failed validation with error {}",
|
|
field, error.code
|
|
));
|
|
}
|
|
}
|
|
|
|
output
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
String::new()
|
|
}
|