slack_morphism/ratectl/
config.rs

1use 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}