2026-02-01 13:57:30 +00:00

42 lines
1.3 KiB
Python

from fastapi import APIRouter, HTTPException, Request
from app.services.auth_service import get_user_for_session
from app.services.system_service import arm_system, system_status
from app.services.zerodha_service import KiteApiError
router = APIRouter(prefix="/api/system")
def _require_user(request: Request):
session_id = request.cookies.get("session_id")
if not session_id:
raise HTTPException(status_code=401, detail="Not authenticated")
user = get_user_for_session(session_id)
if not user:
raise HTTPException(status_code=401, detail="Not authenticated")
return user
@router.post("/arm")
def arm(request: Request):
user = _require_user(request)
try:
result = arm_system(user["id"], client_ip=request.client.host if request.client else None)
except KiteApiError as exc:
raise HTTPException(status_code=502, detail=str(exc)) from exc
if not result.get("ok"):
if result.get("code") == "BROKER_AUTH_REQUIRED":
raise HTTPException(
status_code=401,
detail={"redirect_url": result.get("redirect_url")},
)
raise HTTPException(status_code=400, detail="Unable to arm system")
return result
@router.get("/status")
def status(request: Request):
user = _require_user(request)
return system_status(user["id"])