maxbot 0.1.3

Автоматизация работы с чат-ботами MAX
Documentation
use std::sync::{RwLock, OnceLock, atomic::{AtomicUsize, Ordering}};

static GLOBAL_BASE_URL: OnceLock<RwLock<String>> = OnceLock::new();
static GLOBAL_MAX_RPS: AtomicUsize = AtomicUsize::new(30);

/// Устанавливает глобальный базовый URL API для всех клиентов.
pub fn set_global_base_url(url: impl Into<String>) {
    let lock = GLOBAL_BASE_URL.get_or_init(|| RwLock::new("https://platform-api.max.ru".to_string()));
    let mut guard = lock.write().unwrap();
    *guard = url.into();
}

/// Возвращает текущий глобальный базовый URL.
pub fn get_global_base_url() -> String {
    let lock = GLOBAL_BASE_URL.get_or_init(|| RwLock::new("https://platform-api.max.ru".to_string()));
    lock.read().unwrap().clone()
}

/// Устанавливает глобальное ограничение RPS (0 = без ограничений).
pub fn set_global_max_rps(rps: usize) {
    GLOBAL_MAX_RPS.store(rps, Ordering::Relaxed);
}

/// Возвращает текущее глобальное ограничение RPS.
pub fn get_global_max_rps() -> usize {
    GLOBAL_MAX_RPS.load(Ordering::Relaxed)
}