impl display for limittype, add limittype

This commit is contained in:
bitfl0wer 2023-04-12 18:32:49 +02:00
parent 910313d0ca
commit ff9424f7ee
1 changed files with 55 additions and 23 deletions

View File

@ -2,6 +2,38 @@ pub mod limits {
use reqwest::Client; use reqwest::Client;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use serde_json::from_str; use serde_json::from_str;
#[derive(Clone, Copy)]
pub enum LimitType {
AuthRegister,
AuthLogin,
AbsoluteMessage,
AbsoluteRegister,
Global,
Ip,
Channel,
Error,
Guild,
Webhook,
}
impl std::fmt::Display for LimitType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
LimitType::AuthRegister => write!(f, "auth_register"),
LimitType::AuthLogin => write!(f, "auth_login"),
LimitType::AbsoluteMessage => write!(f, "absolute_message"),
LimitType::AbsoluteRegister => write!(f, "absolute_register"),
LimitType::Global => write!(f, "global"),
LimitType::Ip => write!(f, "ip"),
LimitType::Channel => write!(f, "channel"),
LimitType::Error => write!(f, "error"),
LimitType::Guild => write!(f, "guild"),
LimitType::Webhook => write!(f, "webhook"),
}
}
}
#[derive(Debug, Deserialize, Serialize)] #[derive(Debug, Deserialize, Serialize)]
#[allow(non_snake_case)] #[allow(non_snake_case)]
pub struct User { pub struct User {
@ -102,7 +134,7 @@ pub mod limits {
#[derive(Clone)] #[derive(Clone)]
pub struct Limit { pub struct Limit {
pub bucket: String, pub bucket: LimitType,
pub limit: u64, pub limit: u64,
pub remaining: u64, pub remaining: u64,
pub reset: u64, pub reset: u64,
@ -170,61 +202,61 @@ pub mod limits {
if config.rate.enabled == false { if config.rate.enabled == false {
limits = Limits { limits = Limits {
limit_absolute_messages: Limit { limit_absolute_messages: Limit {
bucket: "absolute_messages".to_string(), bucket: LimitType::AbsoluteMessage,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_absolute_register: Limit { limit_absolute_register: Limit {
bucket: "absolute_register".to_string(), bucket: LimitType::AbsoluteRegister,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_auth_login: Limit { limit_auth_login: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::AuthLogin,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_auth_register: Limit { limit_auth_register: Limit {
bucket: "auth_register".to_string(), bucket: LimitType::AuthRegister,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_ip: Limit { limit_ip: Limit {
bucket: "ip".to_string(), bucket: LimitType::Ip,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_global: Limit { limit_global: Limit {
bucket: "global".to_string(), bucket: LimitType::Global,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_error: Limit { limit_error: Limit {
bucket: "error".to_string(), bucket: LimitType::Error,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_guild: Limit { limit_guild: Limit {
bucket: "guild".to_string(), bucket: LimitType::Guild,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_webhook: Limit { limit_webhook: Limit {
bucket: "webhook".to_string(), bucket: LimitType::Webhook,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
}, },
limit_channel: Limit { limit_channel: Limit {
bucket: "channel".to_string(), bucket: LimitType::Channel,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
@ -233,61 +265,61 @@ pub mod limits {
} else { } else {
limits = Limits { limits = Limits {
limit_absolute_messages: Limit { limit_absolute_messages: Limit {
bucket: "absolute_messages".to_string(), bucket: LimitType::AbsoluteMessage,
limit: config.absoluteRate.sendMessage.limit, limit: config.absoluteRate.sendMessage.limit,
remaining: config.absoluteRate.sendMessage.limit, remaining: config.absoluteRate.sendMessage.limit,
reset: config.absoluteRate.sendMessage.window, reset: config.absoluteRate.sendMessage.window,
}, },
limit_absolute_register: Limit { limit_absolute_register: Limit {
bucket: "absolute_register".to_string(), bucket: LimitType::AbsoluteRegister,
limit: config.absoluteRate.register.limit, limit: config.absoluteRate.register.limit,
remaining: config.absoluteRate.register.limit, remaining: config.absoluteRate.register.limit,
reset: config.absoluteRate.register.window, reset: config.absoluteRate.register.window,
}, },
limit_auth_login: Limit { limit_auth_login: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::AuthLogin,
limit: config.rate.routes.auth.login.count, limit: config.rate.routes.auth.login.count,
remaining: config.rate.routes.auth.login.count, remaining: config.rate.routes.auth.login.count,
reset: config.rate.routes.auth.login.window, reset: config.rate.routes.auth.login.window,
}, },
limit_auth_register: Limit { limit_auth_register: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::AuthRegister,
limit: config.rate.routes.auth.register.count, limit: config.rate.routes.auth.register.count,
remaining: config.rate.routes.auth.register.count, remaining: config.rate.routes.auth.register.count,
reset: config.rate.routes.auth.register.window, reset: config.rate.routes.auth.register.window,
}, },
limit_guild: Limit { limit_guild: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::Guild,
limit: config.rate.routes.guild.count, limit: config.rate.routes.guild.count,
remaining: config.rate.routes.guild.count, remaining: config.rate.routes.guild.count,
reset: config.rate.routes.guild.window, reset: config.rate.routes.guild.window,
}, },
limit_webhook: Limit { limit_webhook: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::Webhook,
limit: config.rate.routes.webhook.count, limit: config.rate.routes.webhook.count,
remaining: config.rate.routes.webhook.count, remaining: config.rate.routes.webhook.count,
reset: config.rate.routes.webhook.window, reset: config.rate.routes.webhook.window,
}, },
limit_channel: Limit { limit_channel: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::Channel,
limit: config.rate.routes.channel.count, limit: config.rate.routes.channel.count,
remaining: config.rate.routes.channel.count, remaining: config.rate.routes.channel.count,
reset: config.rate.routes.channel.window, reset: config.rate.routes.channel.window,
}, },
limit_ip: Limit { limit_ip: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::Ip,
limit: config.rate.ip.count, limit: config.rate.ip.count,
remaining: config.rate.ip.count, remaining: config.rate.ip.count,
reset: config.rate.ip.window, reset: config.rate.ip.window,
}, },
limit_global: Limit { limit_global: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::Global,
limit: config.rate.global.count, limit: config.rate.global.count,
remaining: config.rate.global.count, remaining: config.rate.global.count,
reset: config.rate.global.window, reset: config.rate.global.window,
}, },
limit_error: Limit { limit_error: Limit {
bucket: "auth_login".to_string(), bucket: LimitType::Error,
limit: config.rate.error.count, limit: config.rate.error.count,
remaining: config.rate.error.count, remaining: config.rate.error.count,
reset: config.rate.error.window, reset: config.rate.error.window,
@ -297,7 +329,7 @@ pub mod limits {
if !config.absoluteRate.register.enabled { if !config.absoluteRate.register.enabled {
limits.limit_absolute_register = Limit { limits.limit_absolute_register = Limit {
bucket: "absolute_messages".to_string(), bucket: LimitType::AbsoluteRegister,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,
@ -306,7 +338,7 @@ pub mod limits {
if !config.absoluteRate.sendMessage.enabled { if !config.absoluteRate.sendMessage.enabled {
limits.limit_absolute_messages = Limit { limits.limit_absolute_messages = Limit {
bucket: "absolute_register".to_string(), bucket: LimitType::AbsoluteMessage,
limit: u64::MAX, limit: u64::MAX,
remaining: u64::MAX, remaining: u64::MAX,
reset: u64::MAX, reset: u64::MAX,