From def18e04e2c633a69ba78e57b969b9398b0aaa7e Mon Sep 17 00:00:00 2001 From: filifa Date: Wed, 3 Jul 2024 23:52:40 -0500 Subject: [PATCH] testing updating a game type --- game.go | 19 +++++++++++++++++++ internal/statsapi/feed.go | 1 + main.go | 29 +++++++++++++---------------- 3 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 game.go diff --git a/game.go b/game.go new file mode 100644 index 0000000..c868c4e --- /dev/null +++ b/game.go @@ -0,0 +1,19 @@ +package main + +import "scm.dairydemon.net/filifa/mlblive/internal/statsapi" + +type Game struct { + CurrPlayDesc string + HomeScore uint + AwayScore uint +} + +func (g *Game) Update(feed *statsapi.FeedResponse) { + homeScore, _ := (*feed)["liveData"].(map[string]any)["linescore"].(map[string]any)["teams"].(map[string]any)["home"].(map[string]any)["runs"].(float64) + awayScore, _ := (*feed)["liveData"].(map[string]any)["linescore"].(map[string]any)["teams"].(map[string]any)["away"].(map[string]any)["runs"].(float64) + desc, _ := (*feed)["liveData"].(map[string]any)["plays"].(map[string]any)["currentPlay"].(map[string]any)["result"].(map[string]any)["description"].(string) + + g.HomeScore = uint(homeScore) + g.AwayScore = uint(awayScore) + g.CurrPlayDesc = desc +} diff --git a/internal/statsapi/feed.go b/internal/statsapi/feed.go index 4cda660..3562b7b 100644 --- a/internal/statsapi/feed.go +++ b/internal/statsapi/feed.go @@ -76,6 +76,7 @@ func patch(obj any, path string, value any) error { if err != nil { break } + // FIXME: think i need to do bounds checking here too err = patch(v[idx], rest, value) default: err = errors.New("couldn't determine type") diff --git a/main.go b/main.go index 939a261..875b6ba 100644 --- a/main.go +++ b/main.go @@ -59,11 +59,8 @@ func main() { log.Fatal(err) } - j, err := json.Marshal(feed) - if err != nil { - log.Fatal(err) - } - fmt.Println(string(j)) + var game Game + game.Update(&feed) ts := feed["metaData"].(map[string]any)["timeStamp"].(string) @@ -75,18 +72,18 @@ func main() { patches, err := statsapi.DiffPatch(gamePk, ts, p.UpdateId) if err != nil { - log.Fatal(err) - } - - for _, patch := range patches { - for _, instr := range patch.Diff { - feed.Patch(&instr) + feed, err = statsapi.Feed(gamePk) + if err != nil { + log.Fatal(err) + } + } else { + for _, patch := range patches { + for _, instr := range patch.Diff { + feed.Patch(&instr) + } } } - j, err = json.Marshal(feed) - if err != nil { - log.Fatal(err) - } - fmt.Println(string(j)) + game.Update(&feed) + fmt.Println(game) }