Compost / backend /routers /settings.py
abc1181's picture
feat: full platform with dynamic Composio sync, local DB cache, React UI
f9474bf
Raw
History Blame Contribute Delete
1.91 kB
import os
import psutil
from fastapi import APIRouter, Depends
from pydantic import BaseModel
from typing import Optional, Dict
router = APIRouter()
class SettingsUpdate(BaseModel):
GOOGLE_CLIENT_ID: Optional[str] = None
GOOGLE_CLIENT_SECRET: Optional[str] = None
GITHUB_CLIENT_ID: Optional[str] = None
GITHUB_CLIENT_SECRET: Optional[str] = None
SLACK_CLIENT_ID: Optional[str] = None
SLACK_CLIENT_SECRET: Optional[str] = None
OPENAI_API_KEY: Optional[str] = None
ANTHROPIC_API_KEY: Optional[str] = None
BRAVE_SEARCH_KEY: Optional[str] = None
SERPAPI_KEY: Optional[str] = None
WEBHOOK_SECRET: Optional[str] = None
@router.get("")
async def get_settings():
return {
"data_dir": os.environ.get("DATA_DIR", "/data"),
"platform_version": "1.0.0",
"integrations_count": 18,
"features": {
"oauth": True,
"api_keys": True,
"mcp": True,
"webhooks": True,
"code_sandbox": True
}
}
@router.post("")
async def update_settings(settings: SettingsUpdate):
return {"message": "Settings updated (would be stored in environment/storage)"}
@router.get("/health")
async def health_check():
try:
disk = psutil.disk_usage('/')
mem = psutil.virtual_memory()
return {
"status": "healthy",
"disk": {
"total_gb": round(disk.total / (1024**3), 2),
"used_gb": round(disk.used / (1024**3), 2),
"percent": disk.percent
},
"memory": {
"total_gb": round(mem.total / (1024**3), 2),
"used_gb": round(mem.used / (1024**3), 2),
"percent": mem.percent
},
"cpu_percent": psutil.cpu_percent()
}
except Exception as e:
return {"status": "healthy", "note": str(e)}