refactor
This commit is contained in:
parent
9238a8e03b
commit
1fe327c68c
|
@ -30,21 +30,21 @@ import (
|
||||||
|
|
||||||
var gamePk int
|
var gamePk int
|
||||||
|
|
||||||
func updateFeed(feedResp []byte, gamePk, ts, updateId string) ([]byte, error) {
|
func patch(feedResp []byte, gamePk, ts, updateId string) ([]byte, error) {
|
||||||
diffPatchResp, err := statsapi.RequestDiffPatch(gamePk, ts, updateId)
|
diffPatchResp, err := statsapi.RequestDiffPatch(gamePk, ts, updateId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return statsapi.RequestFeed(gamePk)
|
return feedResp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
patches, err := diffPatchResp.ExtractPatches()
|
patches, err := diffPatchResp.ExtractPatches()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return statsapi.RequestFeed(gamePk)
|
return feedResp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, patch := range patches {
|
for _, patch := range patches {
|
||||||
feedResp, err = patch.Apply(feedResp)
|
feedResp, err = patch.Apply(feedResp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return statsapi.RequestFeed(gamePk)
|
return feedResp, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,6 +73,36 @@ func handleUnexpectedClose(gamePk string) (*statsapi.GamedayWebsocket, []byte, e
|
||||||
return ws, feedResp, err
|
return ws, feedResp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func updateFeed(ws *statsapi.GamedayWebsocket, feedResp []byte, gamePk string) ([]byte, error) {
|
||||||
|
var feed statsapi.Feed
|
||||||
|
err := json.Unmarshal(feedResp, &feed)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
ts := feed.MetaData.TimeStamp
|
||||||
|
|
||||||
|
var p statsapi.Push
|
||||||
|
err = ws.ReadJSON(&p)
|
||||||
|
if websocket.IsUnexpectedCloseError(err, statsapi.GameFinalCode, statsapi.GameUnavailableCode) {
|
||||||
|
log.Println(err)
|
||||||
|
|
||||||
|
newWs, feedResp, err := handleUnexpectedClose(gamePk)
|
||||||
|
if err != nil {
|
||||||
|
return feedResp, err
|
||||||
|
}
|
||||||
|
*ws = *newWs
|
||||||
|
return feedResp, err
|
||||||
|
} else if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
feedResp, err = patch(feedResp, gamePk, ts, p.UpdateId)
|
||||||
|
if err != nil {
|
||||||
|
feedResp, err = statsapi.RequestFeed(gamePk)
|
||||||
|
}
|
||||||
|
return feedResp, err
|
||||||
|
}
|
||||||
|
|
||||||
func subscribe(cmd *cobra.Command, args []string) {
|
func subscribe(cmd *cobra.Command, args []string) {
|
||||||
pkStr := strconv.Itoa(gamePk)
|
pkStr := strconv.Itoa(gamePk)
|
||||||
ws, _, err := newWebsocket(pkStr)
|
ws, _, err := newWebsocket(pkStr)
|
||||||
|
@ -86,31 +116,10 @@ func subscribe(cmd *cobra.Command, args []string) {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var feed statsapi.Feed
|
|
||||||
for {
|
for {
|
||||||
fmt.Println(string(feedResp))
|
fmt.Println(string(feedResp))
|
||||||
|
|
||||||
err = json.Unmarshal(feedResp, &feed)
|
feedResp, err = updateFeed(ws, feedResp, pkStr)
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
ts := feed.MetaData.TimeStamp
|
|
||||||
|
|
||||||
var p statsapi.Push
|
|
||||||
err = ws.ReadJSON(&p)
|
|
||||||
if websocket.IsUnexpectedCloseError(err, statsapi.GameFinalCode, statsapi.GameUnavailableCode) {
|
|
||||||
log.Println(err)
|
|
||||||
ws, feedResp, err = handleUnexpectedClose(pkStr)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
defer ws.Close()
|
|
||||||
continue
|
|
||||||
} else if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
feedResp, err = updateFeed(feedResp, pkStr, ts, p.UpdateId)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue