This commit is contained in:
team3
2026-07-24 11:24:24 +02:00
parent f41ac76b57
commit 848c8ea1aa
41 changed files with 1776 additions and 15 deletions

View File

@@ -0,0 +1,48 @@
# Einheiten: backend/tft/matches/riot.py
stand: f41ac76b5789
## backend/tft/matches/riot.py::_load_env
beschreibung: Lädt Variablen aus backend/.env in os.environ, sofern die Datei existiert.
input: keine Argumente; liest backend/.env relativ zum Repo-Root.
output: füllt fehlende Umgebungsvariablen in os.environ (None).
entscheidungen:
- Nur vorhandene Schlüssel werden gesetzt, bestehende Werte bleiben unangetastet.
beleg: "os.environ.setdefault(key.strip(), value.strip())"
- Kommentarzeilen und Zeilen ohne "=" werden ignoriert.
beleg: "if line and not line.startswith(\"#\") and \"=\" in line:"
- Fehlt die .env-Datei, wird der Ladevorgang still beendet.
beleg: "if not env_file.exists():"
anker: paths
kanten:
## backend/tft/matches/riot.py::api_key
beschreibung: Liefert den Riot-API-Key aus der Umgebung und bricht bei fehlendem Key ab.
input: keine Argumente; liest RIOT_API_KEY aus os.environ.
output: den Riot-API-Key als String oder beendet den Prozess via SystemExit.
entscheidungen:
- Vor dem Auslesen wird die .env-Datei nachgeladen.
beleg: "_load_env()"
- Ohne gesetzten Key wird das Programm mit klarer Anleitung beendet.
beleg: "raise SystemExit("
- Der Fehlerhinweis nennt den Bezugsort backend/.env.
beleg: "put it in backend/.env"
kanten:
- ruft-auf: backend/tft/matches/riot.py::_load_env
## backend/tft/matches/riot.py::RiotClient
beschreibung: Dünner Wrapper für die Riot-API mit Rate-Limiting, 429-Retry und nutzbaren TFT-Endpunkten.
input: Hostname, Pfad, Query-Parameter und ggf. PUUID/Match-ID des Aufrufers.
output: JSON-Antwort der Riot-API als dict oder list, bzw. aggregierte Ladder-Einträge.
entscheidungen:
- Vor jedem Request wird mindestens SLEEP Sekunden gewartet, um das Dev-Key-Limit einzuhalten.
beleg: "time.sleep(SLEEP)"
- Bei HTTP 429 wird anhand von Retry-After erneut gesendet.
beleg: "if resp.status_code == 429:"
- Bei 401/403 wird der Prozess mit Hinweis beendet statt eine Exception weiterzureichen.
beleg: "if resp.status_code in (401, 403):"
- Der API-Key wird als X-Riot-Token-Header übergeben.
beleg: "headers={\"X-Riot-Token\": self.key}, timeout=30"
- setdefault verhindert das Überschreiben vorhandener Env-Variablen.
beleg: "os.environ.setdefault(key.strip(), value.strip())"
kanten:
- ruft-auf: backend/tft/matches/riot.py::api_key