Files
tlw-database-tool/docs/apifootball.md
T

1.9 KiB

apifootball — API-Football Integration

Fetches, caches, and serves match data from API-Football. Raw JSON is cached in S3 to avoid repeated API calls.

Classes

APIFootballUpdater

HTTP client that fetches raw JSON from API-Football and writes to S3.

  • updateAllFixtures(season) — fetches all leagues' fixtures
  • updateAllRounds(season) — fetches all leagues' round metadata
  • getRawData(requestPath, season, league) — calls API-Football with rate-limit retry
  • getLeagues() — reads league IDs from Ligen_v3.json resource

Handles the Tippliga↔API-Football season offset: for most leagues, Tippliga season N corresponds to API-Football season N-1 (except World Cup league=1 and Euro league=4).

APIFootballConnector

Singleton that reads cached S3 JSON and resolves API data into APIFootballMatch objects.

  • getMatchDataByLeagueAndMatchday(league, matchday) — all matches for a matchday
  • getMatchDataByLeagueAndMatchID(league, id) — single match by API fixture ID
  • getMatchdays(leagueId) — round metadata from S3
  • getTeamsForLeague(season, league) — live team list from API

APIFootballMatch

Extends BaseMatch. Parses a raw API-Football JSON fixture object.

Parses: fixture ID, league ID, team IDs + names, round string, datetime, status, fulltime/extratime/penalty scores.

Key method: getMatchdayFromRoundString(season, round, leagueId) — converts API round names (e.g. "Regular Season - 1") to Tippliga matchday numbers. Falls back to the rounds JSON for non-regular-season formats.

APIFootballMatchesProvider

High-level resolver that reads matchday config (from the JSON config file) and returns flat APIFootballMatch lists.

Supports two config entry types:

  • AllMatchesOfMatchday — fetch all matches for a given API league+matchday
  • SingleMatch — fetch a specific match by API league+fixture ID

Honors showTable and ko flags from config.