95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
| #!/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() |