Files

40 lines
1.9 KiB
Markdown

# apifootball — API-Football Integration
Fetches, caches, and serves match data from [API-Football](https://www.api-football.com/). 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.