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