2022-03-05 19:43:02 +00:00
|
|
|
macro_rules! check_length {
|
|
|
|
($max:ident, $field:expr) => {
|
|
|
|
if $field.len() > $max {
|
|
|
|
return json!({ "error": format!("{} exceeded", stringify!($max)) });
|
|
|
|
}
|
|
|
|
};
|
|
|
|
($max:ident, $field:expr, $($fields:expr),+) => {
|
|
|
|
check_length!($max, $field);
|
|
|
|
check_length!($max, $($fields),+);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
macro_rules! check_length_opt {
|
|
|
|
($max:ident, $field:expr) => {
|
|
|
|
if let Some(field) = &$field {
|
|
|
|
check_length!($max, field);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
($max:ident, $field:expr, $($fields:expr),+) => {
|
|
|
|
check_length_opt!($max, $field);
|
|
|
|
check_length_opt!($max, $($fields),+);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
macro_rules! check_url {
|
|
|
|
($field:expr) => {
|
2022-03-19 17:41:34 +00:00
|
|
|
if !($field.starts_with("http://") || $field.starts_with("https://")) {
|
2022-03-05 19:43:02 +00:00
|
|
|
return json!({ "error": "URL invalid" });
|
|
|
|
}
|
|
|
|
};
|
|
|
|
($field:expr, $($fields:expr),+) => {
|
|
|
|
check_url!($max, $field);
|
|
|
|
check_url!($max, $($fields),+);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
macro_rules! check_url_opt {
|
|
|
|
($field:expr) => {
|
|
|
|
if let Some(field) = &$field {
|
|
|
|
check_url!(field);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
($field:expr, $($fields:expr),+) => {
|
|
|
|
check_url_opt!($field);
|
|
|
|
check_url_opt!($($fields),+);
|
|
|
|
};
|
|
|
|
}
|