slack_morphism/ratectl/
config.rs1use crate::ratectl::*;
2use lazy_static::lazy_static;
3
4use rsb_derive::Builder;
5use std::collections::HashMap;
6
7#[derive(Debug, PartialEq, Eq, Clone, Builder)]
8pub struct SlackApiMethodRateControlConfig {
9 pub tier: Option<SlackApiMethodRateTier>,
10 pub special_rate_limit: Option<SlackApiRateControlSpecialLimit>,
11}
12
13#[derive(Debug, PartialEq, Eq, Clone, Builder)]
14pub struct SlackApiRateControlConfig {
15 pub global_max_rate_limit: Option<SlackApiRateControlLimit>,
16 pub team_max_rate_limit: Option<SlackApiRateControlLimit>,
17
18 #[default = "SLACK_TIERS_DEFAULT_LIMITS_MAP.clone()"]
19 pub tiers_limits: HashMap<SlackApiMethodRateTier, SlackApiRateControlLimit>,
20
21 pub max_delay_timeout: Option<std::time::Duration>,
22 pub max_retries: Option<usize>,
23}
24
25impl SlackApiRateControlConfig {}
26
27lazy_static! {
28 pub static ref SLACK_TIER1_METHOD_CONFIG: SlackApiMethodRateControlConfig =
29 SlackApiMethodRateControlConfig::new().with_tier(SlackApiMethodRateTier::Tier1);
30 pub static ref SLACK_TIER2_METHOD_CONFIG: SlackApiMethodRateControlConfig =
31 SlackApiMethodRateControlConfig::new().with_tier(SlackApiMethodRateTier::Tier2);
32 pub static ref SLACK_TIER3_METHOD_CONFIG: SlackApiMethodRateControlConfig =
33 SlackApiMethodRateControlConfig::new().with_tier(SlackApiMethodRateTier::Tier3);
34 pub static ref SLACK_TIER4_METHOD_CONFIG: SlackApiMethodRateControlConfig =
35 SlackApiMethodRateControlConfig::new().with_tier(SlackApiMethodRateTier::Tier4);
36}