From eddcfe25fa849867f329983e6dd7153d177e66cd Mon Sep 17 00:00:00 2001 From: tiennm99 Date: Sun, 5 Apr 2026 12:13:43 +0700 Subject: [PATCH] feat: auto-detect latest champions version from Riot API When championsVersion is empty, fetch the latest version from ddragon.leagueoflegends.com instead of requiring a hardcoded value. --- data/config.go | 32 +++++++++++++++++++++++++++++++- data/main.go | 8 +++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/data/config.go b/data/config.go index 6463254..435d760 100644 --- a/data/config.go +++ b/data/config.go @@ -1,3 +1,33 @@ package main -const championsVersion = "16.2.1" +import ( + "encoding/json" + "fmt" + "net/http" +) + +// Set this to pin a specific version. Leave empty to auto-detect latest. +var championsVersion = "" + +func getChampionsVersion() (string, error) { + if championsVersion != "" { + return championsVersion, nil + } + + resp, err := http.Get("https://ddragon.leagueoflegends.com/api/versions.json") + if err != nil { + return "", fmt.Errorf("failed to fetch versions: %w", err) + } + defer resp.Body.Close() + + var versions []string + if err := json.NewDecoder(resp.Body).Decode(&versions); err != nil { + return "", fmt.Errorf("failed to decode versions: %w", err) + } + + if len(versions) == 0 { + return "", fmt.Errorf("no versions found") + } + + return versions[0], nil +} diff --git a/data/main.go b/data/main.go index 6d144d4..b3e638e 100644 --- a/data/main.go +++ b/data/main.go @@ -11,7 +11,13 @@ import ( ) func main() { - champions, err := parser.ParseChampions(championsVersion) + version, err := getChampionsVersion() + if err != nil { + log.Fatalf("Failed to get champions version: %v", err) + } + fmt.Printf("Using champions version: %s\n", version) + + champions, err := parser.ParseChampions(version) if err != nil { log.Fatalf("Failed to parse champions: %v", err) }