refactor
This commit is contained in:
parent
9238a8e03b
commit
1fe327c68c
|
@ -30,21 +30,21 @@ import (
|
|||
|
||||
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)
|
||||
if err != nil {
|
||||
return statsapi.RequestFeed(gamePk)
|
||||
return feedResp, err
|
||||
}
|
||||
|
||||
patches, err := diffPatchResp.ExtractPatches()
|
||||
if err != nil {
|
||||
return statsapi.RequestFeed(gamePk)
|
||||
return feedResp, err
|
||||
}
|
||||
|
||||
for _, patch := range patches {
|
||||
feedResp, err = patch.Apply(feedResp)
|
||||
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
|
||||
}
|
||||
|
||||
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) {
|
||||
pkStr := strconv.Itoa(gamePk)
|
||||
ws, _, err := newWebsocket(pkStr)
|
||||
|
@ -86,31 +116,10 @@ func subscribe(cmd *cobra.Command, args []string) {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var feed statsapi.Feed
|
||||
for {
|
||||
fmt.Println(string(feedResp))
|
||||
|
||||
err = json.Unmarshal(feedResp, &feed)
|
||||
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)
|
||||
feedResp, err = updateFeed(ws, feedResp, pkStr)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue