49 lines
2.3 KiB
Markdown
49 lines
2.3 KiB
Markdown
# 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
|