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),+);
|
|
|
|
};
|
|
|
|
}
|
2022-03-19 21:28:11 +00:00
|
|
|
|
|
|
|
macro_rules! check_authorization {
|
|
|
|
($cookies:expr, $ctx:expr, $guild:expr) => {
|
|
|
|
use serenity::model::id::UserId;
|
|
|
|
|
|
|
|
let user_id = $cookies.get_private("userid").map(|c| c.value().parse::<u64>().ok()).flatten();
|
|
|
|
|
|
|
|
match user_id {
|
|
|
|
Some(user_id) => {
|
|
|
|
match GuildId($guild).to_guild_cached($ctx) {
|
|
|
|
Some(guild) => {
|
|
|
|
let member = guild.member($ctx, UserId(user_id)).await;
|
|
|
|
|
|
|
|
match member {
|
|
|
|
Err(_) => {
|
|
|
|
return json!({"error": "User not in guild"})
|
|
|
|
}
|
|
|
|
|
|
|
|
Ok(_) => {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
None => {
|
|
|
|
return json!({"error": "Bot not in guild"})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
None => {
|
|
|
|
return json!({"error": "User not authorized"});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|