pub const HIPPOX_LANG: &str = "HIPPOX_LANG";
pub const HIPPOX_PROVIDER: &str = "HIPPOX_PROVIDER";
pub const HIPPOX_ENABLE_CLI: &str = "HIPPOX_ENABLE_CLI";
pub const HIPPOX_ENABLE_TCP: &str = "HIPPOX_ENABLE_TCP";
pub const HIPPOX_ENABLE_HTTP: &str = "HIPPOX_ENABLE_HTTP";
pub const HIPPOX_ENABLE_WS: &str = "HIPPOX_ENABLE_WS";
pub const HIPPOX_SMTP_HOST: &str = "HIPPOX_SMTP_HOST";
pub const HIPPOX_SMTP_PORT: &str = "HIPPOX_SMTP_PORT";
pub const HIPPOX_SMTP_USERNAME: &str = "HIPPOX_SMTP_USERNAME";
pub const HIPPOX_SMTP_PASSWORD: &str = "HIPPOX_SMTP_PASSWORD";
pub const HIPPOX_SMTP_FROM: &str = "HIPPOX_SMTP_FROM";
pub const HIPPOX_TELEGRAM_BOT_TOKEN: &str = "HIPPOX_TELEGRAM_BOT_TOKEN";
pub const HIPPOX_DINGDING_ACCESS_TOKEN: &str = "HIPPOX_DINGDING_ACCESS_TOKEN";
pub const HIPPOX_FEISHU_WEBHOOK: &str = "HIPPOX_FEISHU_WEBHOOK";
pub const HIPPOX_WECOM_WEBHOOK: &str = "HIPPOX_WECOM_WEBHOOK";
pub fn get_env(key: &str) -> Option<String> {
std::env::var(key).ok()
}
pub fn get_env_or(key: &str, default: &str) -> String {
std::env::var(key).unwrap_or_else(|_| default.to_string())
}
pub fn is_env_true(key: &str) -> bool {
std::env::var(key).unwrap_or_else(|_| "false".to_string()) == "true"
}
pub fn get_required_env(key: &str) -> anyhow::Result<String> {
std::env::var(key).map_err(|_| anyhow::anyhow!("Environment variable '{}' is not set", key))
}