llm-api/wiki_router.py aktualisiert
All checks were successful
Deploy Trainer_LLM to llm-node / deploy (push) Successful in 2s

This commit is contained in:
Lars 2025-08-11 11:01:23 +02:00
parent 5c9c8951c1
commit d9abcb3ef4

View File

@ -118,42 +118,66 @@ def health() -> Dict[str, str]:
@router.post("/login", response_model=WikiLoginResponse)
def login(data: WikiLoginRequest):
# Token holen
# 1) Token holen
try:
token_resp = wiki_session.get(
tok = wiki_session.get(
WIKI_API_URL,
params={"action": "query", "meta": "tokens", "type": "login", "format": "json"},
params={"action":"query","meta":"tokens","type":"login","format":"json"},
timeout=10,
)
token_resp.raise_for_status()
token = token_resp.json().get("query", {}).get("tokens", {}).get("logintoken")
tok.raise_for_status()
logintoken = tok.json().get("query", {}).get("tokens", {}).get("logintoken")
if not logintoken:
raise HTTPException(status_code=502, detail="Kein Login-Token erhalten")
except Exception as e:
raise HTTPException(status_code=502, detail=f"Token-Error: {e}")
if not token:
raise HTTPException(status_code=502, detail="Kein Login-Token erhalten")
# clientlogin
# 2) Versuch: clientlogin (mit loginreturnurl!)
try:
login_resp = wiki_session.post(
cl = wiki_session.post(
WIKI_API_URL,
data={
"action": "clientlogin",
"format": "json",
"username": data.username,
"password": data.password,
"logintoken": token,
"logintoken": logintoken,
"loginreturnurl": "https://example.org/" # notwendig bei manchen Setups
},
timeout=15,
)
login_resp.raise_for_status()
status = login_resp.json().get("clientlogin", {}).get("status")
if status != "PASS":
raise HTTPException(status_code=401, detail=f"Login fehlgeschlagen: {status}")
cl.raise_for_status()
clj = cl.json().get("clientlogin", {})
if clj.get("status") == "PASS":
return WikiLoginResponse(status="success")
# Falls UI/FAIL/etc.: weiter mit Legacy
except Exception as e:
# nicht sofort fehlschlagen Legacy probieren
pass
# 3) Fallback: action=login (Legacy)
try:
lg = wiki_session.post(
WIKI_API_URL,
data={
"action": "login",
"format": "json",
"lgname": data.username,
"lgpassword": data.password,
"lgtoken": logintoken,
},
timeout=15,
)
lg.raise_for_status()
res = lg.json().get("login", {}).get("result")
if res == "Success":
return WikiLoginResponse(status="success")
raise HTTPException(status_code=401, detail=f"Login fehlgeschlagen (legacy): {res}")
except HTTPException:
raise
except Exception as e:
raise HTTPException(status_code=502, detail=f"Login-Error: {e}")
return WikiLoginResponse(status="success")
raise HTTPException(status_code=502, detail=f"Login-Error (legacy): {e}")
@router.get("/semantic/pages")
def semantic_pages(category: str = Query(..., description="Kategorie ohne 'Category:'")) -> Dict[str, Any]: