From 0f32f74431de3d537236b5d99a0d266497fd7e4f Mon Sep 17 00:00:00 2001 From: filifa Date: Sat, 13 Jul 2024 17:30:53 -0500 Subject: [PATCH] apply all the patches --- main.go | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/main.go b/main.go index e120d22..ae16fc1 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,6 @@ package main import ( "encoding/json" - "errors" "flag" "fmt" "log" @@ -50,26 +49,29 @@ func getGamePk() string { return gamePk } -func extractPatch(diffPatch []byte) (jsonpatch.Patch, error) { - var p jsonpatch.Patch - var d []any - err := json.Unmarshal(diffPatch, &d) +func extractPatches(diffPatch []byte) ([]jsonpatch.Patch, error) { + var patches []jsonpatch.Patch + var objs []any + err := json.Unmarshal(diffPatch, &objs) if err != nil { - return p, err + return patches, err } - if len(d) == 0 { - return p, errors.New("empty diffPatch") + for _, obj := range objs { + diff := obj.(map[string]any)["Diff"] + patch, err := json.Marshal(diff) + if err != nil { + return patches, err + } + + p, err := jsonpatch.DecodePatch(patch) + if err != nil { + return patches, err + } + patches = append(patches, p) } - diff := d[0].(map[string]any)["Diff"] - patch, err := json.Marshal(diff) - if err != nil { - return p, err - } - - p, err = jsonpatch.DecodePatch(patch) - return p, err + return patches, nil } func main() { @@ -108,16 +110,18 @@ func main() { } diffPatchResp, err := statsapi.RequestDiffPatch(gamePk, ts, p.UpdateId) - patch, err := extractPatch(diffPatchResp) + patches, err := extractPatches(diffPatchResp) if err != nil { feedResp, err = statsapi.RequestFeed(gamePk) if err != nil { log.Fatal(err) } } else { - feedResp, err = patch.Apply(feedResp) - if err != nil { - log.Fatal(err) + for _, patch := range patches { + feedResp, err = patch.Apply(feedResp) + if err != nil { + log.Fatal(err) + } } }