liurenchaxin/config/doppler_config.py

95 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
Doppler配置管理模块
安全地从Doppler获取配置和密钥
"""
import os
from typing import Optional, Dict, Any
def get_secret(key: str, default: Optional[str] = None) -> Optional[str]:
"""
从Doppler或环境变量获取密钥
Args:
key: 密钥名称
default: 默认值
Returns:
密钥值或默认值
"""
# 首先尝试从环境变量获取Doppler会注入到环境变量
value = os.getenv(key, default)
if not value and default is None:
raise ValueError(f"Required secret '{key}' not found in environment variables")
return value
def get_rapidapi_key() -> str:
"""
获取RapidAPI密钥
Returns:
RapidAPI密钥
Raises:
ValueError: 如果密钥未找到
"""
return get_secret('RAPIDAPI_KEY')
def get_openrouter_key() -> str:
"""
获取OpenRouter API密钥
Returns:
OpenRouter API密钥
Raises:
ValueError: 如果密钥未找到
"""
return get_secret('OPENROUTER_API_KEY_1')
def get_database_config() -> Dict[str, str]:
"""
获取数据库配置
Returns:
数据库配置字典
"""
return {
'postgres_url': get_secret('POSTGRES_URL', ''),
'mongodb_url': get_secret('MONGODB_URL', ''),
'zilliz_url': get_secret('ZILLIZ_URL', ''),
'zilliz_token': get_secret('ZILLIZ_TOKEN', '')
}
def validate_config() -> bool:
"""
验证必要的配置是否存在
Returns:
配置是否有效
"""
required_keys = [
'RAPIDAPI_KEY',
'OPENROUTER_API_KEY_1'
]
missing_keys = []
for key in required_keys:
if not os.getenv(key):
missing_keys.append(key)
if missing_keys:
print(f"❌ 缺少必要的配置: {', '.join(missing_keys)}")
print("请确保已正确配置Doppler或环境变量")
return False
print("✅ 配置验证通过")
return True
if __name__ == "__main__":
# 配置验证脚本
print("🔧 验证配置...")
validate_config()