apply all the patches

This commit is contained in:
filifa 2024-07-13 17:30:53 -05:00
parent 7347357aab
commit 0f32f74431
1 changed files with 24 additions and 20 deletions

44
main.go
View File

@ -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)
}
}
}