use std::{collections::HashMap, sync::Arc, time::Duration};
use tokio::sync::Mutex;
use crate::core::{
app_ticket_manager::AppTicketManager,
constants::{AppType, FEISHU_BASE_URL},
token_manager::TokenManager,
};
#[derive(Debug, Clone)]
pub struct Config {
pub app_id: String,
pub app_secret: String,
pub base_url: String,
pub enable_token_cache: bool,
pub app_type: AppType,
pub http_client: reqwest::Client,
pub req_timeout: Option<Duration>,
pub header: HashMap<String, String>,
pub token_manager: Arc<Mutex<TokenManager>>,
pub app_ticket_manager: Arc<Mutex<AppTicketManager>>,
}
impl Default for Config {
fn default() -> Self {
Self {
app_id: "".to_string(),
app_secret: "".to_string(),
base_url: FEISHU_BASE_URL.to_string(),
enable_token_cache: true,
app_type: AppType::SelfBuild,
http_client: reqwest::Client::new(),
req_timeout: None,
header: Default::default(),
token_manager: Arc::new(Mutex::new(TokenManager::new())),
app_ticket_manager: Arc::new(Mutex::new(AppTicketManager::new())),
}
}
}