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

34
main.go
View File

@ -2,7 +2,6 @@ package main
import ( import (
"encoding/json" "encoding/json"
"errors"
"flag" "flag"
"fmt" "fmt"
"log" "log"
@ -50,26 +49,29 @@ func getGamePk() string {
return gamePk return gamePk
} }
func extractPatch(diffPatch []byte) (jsonpatch.Patch, error) { func extractPatches(diffPatch []byte) ([]jsonpatch.Patch, error) {
var p jsonpatch.Patch var patches []jsonpatch.Patch
var d []any var objs []any
err := json.Unmarshal(diffPatch, &d) err := json.Unmarshal(diffPatch, &objs)
if err != nil { if err != nil {
return p, err return patches, err
} }
if len(d) == 0 { for _, obj := range objs {
return p, errors.New("empty diffPatch") diff := obj.(map[string]any)["Diff"]
}
diff := d[0].(map[string]any)["Diff"]
patch, err := json.Marshal(diff) patch, err := json.Marshal(diff)
if err != nil { if err != nil {
return p, err return patches, err
} }
p, err = jsonpatch.DecodePatch(patch) p, err := jsonpatch.DecodePatch(patch)
return p, err if err != nil {
return patches, err
}
patches = append(patches, p)
}
return patches, nil
} }
func main() { func main() {
@ -108,18 +110,20 @@ func main() {
} }
diffPatchResp, err := statsapi.RequestDiffPatch(gamePk, ts, p.UpdateId) diffPatchResp, err := statsapi.RequestDiffPatch(gamePk, ts, p.UpdateId)
patch, err := extractPatch(diffPatchResp) patches, err := extractPatches(diffPatchResp)
if err != nil { if err != nil {
feedResp, err = statsapi.RequestFeed(gamePk) feedResp, err = statsapi.RequestFeed(gamePk)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
} else { } else {
for _, patch := range patches {
feedResp, err = patch.Apply(feedResp) feedResp, err = patch.Apply(feedResp)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
} }
}
err = json.Unmarshal(feedResp, &feed) err = json.Unmarshal(feedResp, &feed)
if err != nil { if err != nil {