40 lines
1.9 KiB
Markdown
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.
|