Documentation
¶
Overview ¶
Package data provides utilities for loading mock football match data. MockMatches and MockMatchDetails are now in mock_matches.go and mock_details.go
Package data provides utilities for loading mock football match data.
Index ¶
- Constants
- Variables
- func ActiveLeagueIDs() []int
- func AllLeagueIDs() []int
- func CacheDir() (string, error)
- func CheckLatestVersion() (string, error)
- func ConfigDir() (string, error)
- func DebugLogPath() string
- func GenerateRandomUpdate(matchID int) string
- func GetAllRegions() []string
- func LiveUpdates(matchID int) ([]string, error)
- func LoadLatestVersion() (string, error)
- func MockDataPath() (string, error)
- func MockFinishedMatchDetails(matchID int) (*api.MatchDetails, error)
- func MockFinishedMatches() []api.Match
- func MockLiveMatches() []api.Match
- func MockMatchDetails(matchID int) (*api.MatchDetails, error)
- func MockMatches() ([]api.Match, error)
- func MockWorldCupData() *api.WorldCupData
- func MockWorldCupData2026() *api.WorldCupData
- func MockWorldCupUpcoming() []api.Match
- func MockWorldCupUpcoming2026() []api.Match
- func SaveLatestVersion(version string) error
- func SaveLiveUpdate(matchID int, update string) error
- func SaveSettings(settings *Settings) error
- func SettingsPath() (string, error)
- func ShouldCheckVersion() bool
- type LeagueInfo
- type LiveUpdate
- type LiveUpdateGenerator
- type MockMatchesData
- type Settings
Constants ¶
const ( RegionEurope = "Europe" RegionAmerica = "Americas" RegionGlobal = "Global" )
Region constants for organizing leagues
Variables ¶
var AllSupportedLeagues = map[string][]LeagueInfo{ RegionEurope: { {ID: 47, Name: "Premier League", Country: "England"}, {ID: 87, Name: "La Liga", Country: "Spain"}, {ID: 54, Name: "Bundesliga", Country: "Germany"}, {ID: 146, Name: "2. Bundesliga", Country: "Germany"}, {ID: 208, Name: "3. Liga", Country: "Germany"}, {ID: 512, Name: "Regionalliga", Country: "Germany"}, {ID: 55, Name: "Serie A", Country: "Italy"}, {ID: 86, Name: "Serie B", Country: "Italy"}, {ID: 53, Name: "Ligue 1", Country: "France"}, {ID: 110, Name: "Ligue 2", Country: "France"}, {ID: 9227, Name: "Women's Super League", Country: "England"}, {ID: 9907, Name: "Liga F", Country: "Spain"}, {ID: 9676, Name: "Frauen-Bundesliga", Country: "Germany"}, {ID: 10178, Name: "Serie A Femminile", Country: "Italy"}, {ID: 9667, Name: "Première Ligue Féminine", Country: "France"}, {ID: 67, Name: "Allsvenskan", Country: "Sweden"}, {ID: 38, Name: "Austrian Bundesliga", Country: "Austria"}, {ID: 40, Name: "Belgian First Division", Country: "Belgium"}, {ID: 48, Name: "EFL Championship", Country: "England"}, {ID: 108, Name: "EFL League One", Country: "England"}, {ID: 109, Name: "EFL League Two", Country: "England"}, {ID: 196, Name: "Ekstraklasa", Country: "Poland"}, {ID: 57, Name: "Eredivisie", Country: "Netherlands"}, {ID: 218, Name: "League of Ireland First Division", Country: "Ireland"}, {ID: 126, Name: "League of Ireland Premier Division", Country: "Ireland"}, {ID: 61, Name: "Primeira Liga", Country: "Portugal"}, {ID: 10215, Name: "Primeira Liga Qualification", Country: "Portugal"}, {ID: 185, Name: "Liga Portugal 2", Country: "Portugal"}, {ID: 9668, Name: "Liga Portugal 2 Qualification", Country: "Portugal"}, {ID: 64, Name: "Scottish Premiership", Country: "Scotland"}, {ID: 135, Name: "Super League 1", Country: "Greece"}, {ID: 46, Name: "Superligaen", Country: "Denmark"}, {ID: 85, Name: "1. Division", Country: "Denmark"}, {ID: 59, Name: "Eliteserien", Country: "Norway"}, {ID: 203, Name: "1. Divisjon", Country: "Norway"}, {ID: 71, Name: "Süper Lig", Country: "Turkey"}, {ID: 69, Name: "Swiss Super League", Country: "Switzerland"}, {ID: 63, Name: "Russian Premier League", Country: "Russia"}, {ID: 441, Name: "Ukrainian Premier League", Country: "Ukraine"}, {ID: 42, Name: "UEFA Champions League", Country: "Europe"}, {ID: 10216, Name: "UEFA Conference League", Country: "Europe"}, {ID: 73, Name: "UEFA Europa League", Country: "Europe"}, {ID: 50, Name: "UEFA Euro", Country: "Europe"}, {ID: 292, Name: "UEFA Women's Euro", Country: "Europe"}, {ID: 9375, Name: "Women's UEFA Champions League", Country: "Europe"}, {ID: 138, Name: "Copa del Rey", Country: "Spain"}, {ID: 139, Name: "Supercopa de España", Country: "Spain"}, {ID: 132, Name: "FA Cup", Country: "England"}, {ID: 209, Name: "DFB Pokal", Country: "Germany"}, {ID: 10650, Name: "Women's DFB Pokal", Country: "Germany"}, {ID: 141, Name: "Coppa Italia", Country: "Italy"}, {ID: 134, Name: "Coupe de France", Country: "France"}, {ID: 186, Name: "Taça de Portugal", Country: "Portugal"}, {ID: 187, Name: "Taça da Liga", Country: "Portugal"}, {ID: 188, Name: "Supertaça Cândido de Oliveira", Country: "Portugal"}, }, RegionAmerica: { {ID: 297, Name: "CONCACAF Champions Cup", Country: "North America"}, {ID: 298, Name: "CONCACAF Gold Cup", Country: "North America"}, {ID: 9821, Name: "CONCACAF Nations League", Country: "North America"}, {ID: 268, Name: "Brasileirão Série A", Country: "Brazil"}, {ID: 8814, Name: "Brasileirão Série B", Country: "Brazil"}, {ID: 9067, Name: "Copa do Brasil", Country: "Brazil"}, {ID: 10077, Name: "Supercopa do Brasil", Country: "Brazil"}, {ID: 10244, Name: "Paulista", Country: "Brazil"}, {ID: 10272, Name: "Carioca", Country: "Brazil"}, {ID: 10273, Name: "Mineiro", Country: "Brazil"}, {ID: 10274, Name: "Gaúcho", Country: "Brazil"}, {ID: 9429, Name: "Nordeste", Country: "Brazil"}, {ID: 10291, Name: "Goiano", Country: "Brazil"}, {ID: 44, Name: "Copa America", Country: "South America"}, {ID: 9490, Name: "Copa Colombia", Country: "Colombia"}, {ID: 45, Name: "Copa Libertadores", Country: "South America"}, {ID: 299, Name: "Copa Sudamericana", Country: "South America"}, {ID: 491, Name: "Recopa Sudamericana", Country: "South America"}, {ID: 112, Name: "Liga Profesional", Country: "Argentina"}, {ID: 274, Name: "Primera A", Country: "Colombia"}, {ID: 9125, Name: "Primera B", Country: "Colombia"}, {ID: 161, Name: "Primera Division", Country: "Uruguay"}, {ID: 273, Name: "Primera Division", Country: "Chile"}, {ID: 131, Name: "Liga 1", Country: "Peru"}, {ID: 246, Name: "Serie A", Country: "Ecuador"}, {ID: 130, Name: "MLS", Country: "USA"}, {ID: 9134, Name: "NWSL", Country: "USA"}, {ID: 230, Name: "Liga MX", Country: "Mexico"}, }, RegionGlobal: { {ID: 536, Name: "Saudi Pro League", Country: "Saudi Arabia"}, {ID: 525, Name: "AFC Champions League Elite", Country: "Asia"}, {ID: 9469, Name: "AFC Champions League Two", Country: "Asia"}, {ID: 9478, Name: "Indian Super League", Country: "India"}, {ID: 223, Name: "J. League", Country: "Japan"}, {ID: 9080, Name: "K League 1", Country: "South Korea"}, {ID: 9137, Name: "Chinese League One", Country: "China"}, {ID: 535, Name: "Qatar Stars League", Country: "Qatar"}, {ID: 113, Name: "A-League", Country: "Australia"}, {ID: 526, Name: "CAF Champions League", Country: "Africa"}, {ID: 519, Name: "Egyptian Premier League", Country: "Egypt"}, {ID: 537, Name: "Premier Soccer League", Country: "South Africa"}, {ID: 530, Name: "Botola Pro", Country: "Morocco"}, {ID: 289, Name: "Africa Cup of Nations", Country: "International"}, {ID: 77, Name: "FIFA World Cup", Country: "International"}, {ID: 76, Name: "Women's FIFA World Cup", Country: "International"}, {ID: 78, Name: "FIFA Club World Cup", Country: "International"}, {ID: 9806, Name: "UEFA Nations League", Country: "International"}, {ID: 10304, Name: "Finalissima", Country: "International"}, {ID: 489, Name: "Club Friendlies", Country: "International"}, {ID: 114, Name: "International Friendlies", Country: "International"}, }, }
AllSupportedLeagues contains all leagues that Golazo supports organized by region. This is the source of truth for available leagues.
var DefaultLeagueIDs = []int{
47,
87,
42,
77,
}
DefaultLeagueIDs contains the default leagues used when no selection is made. These are the most popular leagues for efficient API usage.
Functions ¶
func ActiveLeagueIDs ¶ added in v0.11.0
func ActiveLeagueIDs() []int
ActiveLeagueIDs returns the league IDs that should be used for API calls. If no leagues are selected in settings, returns the default leagues (not all).
func AllLeagueIDs ¶ added in v0.11.0
func AllLeagueIDs() []int
AllLeagueIDs returns all supported league IDs (used as fallback).
func CacheDir ¶ added in v0.7.0
CacheDir returns the path to the golazo cache directory. Uses os.UserCacheDir() which returns:
- Linux: ~/.cache/golazo (or $XDG_CACHE_HOME/golazo)
- macOS: ~/Library/Caches/golazo
- Windows: %LocalAppData%/golazo
func CheckLatestVersion ¶ added in v0.12.0
CheckLatestVersion fetches the latest version from GitHub releases. Uses GitHub's redirect URL which is simpler than the API. Returns the version tag (e.g., "v1.2.3").
func ConfigDir ¶
ConfigDir returns the path to the golazo config directory. On Linux, follows XDG Base Directory spec (~/.config/golazo). On other systems (macOS, Windows), uses ~/.golazo.
func DebugLogPath ¶ added in v0.26.0
func DebugLogPath() string
DebugLogPath returns the user-facing path to the debug log file, with the home directory represented as "~" for display purposes. It is platform-aware and mirrors the location used by ConfigDir, but performs no filesystem I/O and does not create any directories. Safe to call from init() / flag help.
func GenerateRandomUpdate ¶
GenerateRandomUpdate generates a random live update string.
func GetAllRegions ¶ added in v0.13.0
func GetAllRegions() []string
GetAllRegions returns a list of all available regions in order.
func LiveUpdates ¶
LiveUpdates retrieves live updates for a match.
func LoadLatestVersion ¶ added in v0.12.0
LoadLatestVersion reads the latest known version from storage. Returns empty string if file doesn't exist or can't be read.
func MockDataPath ¶
MockDataPath returns the path to the mock data file.
func MockFinishedMatchDetails ¶
func MockFinishedMatchDetails(matchID int) (*api.MatchDetails, error)
MockFinishedMatchDetails returns detailed match information for finished matches. These matches have rich event data for testing the "all events" view.
func MockFinishedMatches ¶
MockFinishedMatches returns finished matches for the stats view. 9 matches from preferred leagues: Premier League, La Liga, Champions League
func MockLiveMatches ¶
MockLiveMatches returns live matches for the live matches view. 5 matches total: 3 ongoing with events, 2 just finished (showing "all events")
func MockMatchDetails ¶
func MockMatchDetails(matchID int) (*api.MatchDetails, error)
MockMatchDetails returns detailed match information for a specific match ID. Handles both live matches (from MockLiveMatches) and finished matches.
func MockMatches ¶
MockMatches returns multiple mock matches for testing. This is a legacy function that combines live and finished matches.
func MockWorldCupData ¶ added in v0.26.0
func MockWorldCupData() *api.WorldCupData
MockWorldCupData returns real completed data from the 2022 FIFA World Cup (Qatar). Sourced from FotMob. Used as sample data for development and the --mock flag.
func MockWorldCupData2026 ¶ added in v0.30.0
func MockWorldCupData2026() *api.WorldCupData
MockWorldCupData2026 returns illustrative data for the 2026 FIFA World Cup (USA/Canada/Mexico). Group standings reflect the tournament as of mid-group- stage; the knockout bracket shows all 32 qualified teams with no scores yet, simulating the bracket preview at knockout kick-off.
Team IDs prefixed 900xx are internal placeholders — they match across groups and bracket but do not correspond to FotMob's real IDs for those teams. Use --mock for verified 2022 data; this flag is for layout preview only.
func MockWorldCupUpcoming ¶ added in v0.26.0
MockWorldCupUpcoming returns a small set of synthetic World Cup fixtures covering the next four days, used by --mock and as a deterministic stand-in when no client is available. Kickoff times are anchored at the start of the current local day so the data stays "current" no matter when the app is run.
func MockWorldCupUpcoming2026 ¶ added in v0.30.0
MockWorldCupUpcoming2026 is intentionally empty — upcoming fixtures are fetched live from FotMob even in --wc-season 2026 mode.
func SaveLatestVersion ¶ added in v0.12.0
SaveLatestVersion saves the latest version to storage.
func SaveLiveUpdate ¶
SaveLiveUpdate appends a live update to the storage.
func SaveSettings ¶ added in v0.3.0
SaveSettings writes settings to the settings.yaml file.
func SettingsPath ¶ added in v0.3.0
SettingsPath returns the path to the settings file.
func ShouldCheckVersion ¶ added in v0.12.0
func ShouldCheckVersion() bool
ShouldCheckVersion returns true if we should check for a new version. Checks if the latest_version.txt file is older than 24 hours.
Types ¶
type LeagueInfo ¶ added in v0.3.0
LeagueInfo contains league metadata for display purposes.
func GetLeaguesForRegion ¶ added in v0.13.0
func GetLeaguesForRegion(region string) []LeagueInfo
GetLeaguesForRegion returns all leagues for a specific region.
type LiveUpdate ¶
LiveUpdate represents a single live update string.
type LiveUpdateGenerator ¶
type LiveUpdateGenerator struct {
// contains filtered or unexported fields
}
LiveUpdateGenerator generates mock live updates for a match.
func NewLiveUpdateGenerator ¶
func NewLiveUpdateGenerator(matchID int) *LiveUpdateGenerator
NewLiveUpdateGenerator creates a new live update generator for a match.
func (*LiveUpdateGenerator) HasMore ¶
func (g *LiveUpdateGenerator) HasMore() bool
HasMore returns true if there are more updates.
func (*LiveUpdateGenerator) NextUpdate ¶
func (g *LiveUpdateGenerator) NextUpdate() (string, bool)
NextUpdate returns the next live update string.
type MockMatchesData ¶
MockMatchesData contains multiple matches for testing. Uses api.Match directly to ensure single source of truth.
type Settings ¶ added in v0.3.0
type Settings struct {
// SelectedLeagues contains the IDs of leagues the user wants to follow.
// If empty, all supported leagues are used.
SelectedLeagues []int `yaml:"selected_leagues"`
}
Settings represents user preferences stored in settings.yaml.
func LoadSettings ¶ added in v0.3.0
LoadSettings reads settings from the settings.yaml file. Returns default settings (empty selection = all leagues) if file doesn't exist.
func (*Settings) IsLeagueSelected ¶ added in v0.3.0
IsLeagueSelected checks if a league ID is in the selected list.