forked from FOSS/Steam-Panel
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from fastapi import APIRouter, HTTPException
|
|
from pydantic import BaseModel
|
|
|
|
from app.database import get_db
|
|
from app.core.auto_confirm import auto_confirm_manager
|
|
|
|
router = APIRouter(prefix="/api/auto-confirm", tags=["auto-confirm"])
|
|
|
|
|
|
class AutoConfirmRequest(BaseModel):
|
|
account_ids: list[int]
|
|
|
|
|
|
@router.post("/start")
|
|
async def start_auto_confirm(body: AutoConfirmRequest):
|
|
db = await get_db()
|
|
started: list[int] = []
|
|
for aid in body.account_ids:
|
|
cursor = await db.execute("SELECT * FROM accounts WHERE id = ?", (aid,))
|
|
row = await cursor.fetchone()
|
|
if not row:
|
|
raise HTTPException(404, f"Account {aid} not found")
|
|
account = dict(row)
|
|
if not account.get("identity_secret"):
|
|
raise HTTPException(400, f"Account {account['login']} has no identity_secret (mafile required)")
|
|
await auto_confirm_manager.start(account)
|
|
await db.execute("UPDATE accounts SET auto_confirm = 1 WHERE id = ?", (aid,))
|
|
started.append(aid)
|
|
await db.commit()
|
|
return {"started": started}
|
|
|
|
|
|
@router.post("/stop")
|
|
async def stop_auto_confirm(body: AutoConfirmRequest):
|
|
db = await get_db()
|
|
stopped: list[int] = []
|
|
for aid in body.account_ids:
|
|
auto_confirm_manager.stop(aid)
|
|
await db.execute("UPDATE accounts SET auto_confirm = 0 WHERE id = ?", (aid,))
|
|
stopped.append(aid)
|
|
await db.commit()
|
|
return {"stopped": stopped}
|
|
|
|
|
|
@router.get("/status")
|
|
async def auto_confirm_status():
|
|
running = auto_confirm_manager.running_ids()
|
|
errors = auto_confirm_manager.pop_errors()
|
|
return {"running": list(running), "errors": errors}
|