Files
tft/.planer/einheiten/backend__tft__matches__riot.py.md
2026-07-24 11:24:24 +02:00

2.3 KiB

Einheiten: backend/tft/matches/riot.py

stand: f41ac76b57

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