From a0127890a9fb20fb7cbc65d87e9e9392a75d6d28 Mon Sep 17 00:00:00 2001 From: Brian Buller Date: Fri, 8 Nov 2019 17:41:31 -0600 Subject: [PATCH] Fix last_star_ts bug with inconsistent JSON --- aocbot.go | 19 +++++++++++-------- go.mod | 2 ++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/aocbot.go b/aocbot.go index 5a65433..cc786d3 100644 --- a/aocbot.go +++ b/aocbot.go @@ -112,9 +112,7 @@ func aocBotMain(slack *Slack) { writeToLog(" " + time.Now().Format(time.RFC3339) + " - Received Message\n") processMessage(slack, &m) } - } - writeToLog("== " + time.Now().Format(time.RFC3339) + " - Bot Stopped ==\n\n") } func processMessage(slack *Slack, m *Message) { @@ -134,6 +132,7 @@ func processMessage(slack *Slack, m *Message) { if u, ue := slack.getUserInfo(m.User); ue == nil { saveUser(u) } + usr, err = getUser(m.User) } if m.Channel != "" { @@ -147,6 +146,7 @@ func processMessage(slack *Slack, m *Message) { if c, ce := slack.getChannelInfo(m.Channel); ce == nil { // Save channel info saveChannelInfo(c) + chnl, err = getChannelInfo(m.Channel) } else { isDirectMessage = true } @@ -209,7 +209,7 @@ func processMessage(slack *Slack, m *Message) { } } else { fmt.Println("--- Channel Message Received") - fmt.Println(m.Channel, m.User, m.Text) + fmt.Println(chnl.Name, usr.Name, m.Text) if m.Channel == slackChannel { // In the AoC channel if strings.HasPrefix(m.Text, "!aoc") { @@ -258,7 +258,7 @@ func getAoCLeaderboard(boardId string) (*Leaderboard, error) { content, err = ioutil.ReadFile("./cookies") if err != nil { fmt.Println("Error reading Cookies") - return leaderboard, err + return nil, err } line := strings.TrimSpace(string(content)) req.Header.Add("Cookie", line) @@ -266,18 +266,21 @@ func getAoCLeaderboard(boardId string) (*Leaderboard, error) { resp, err = client.Do(req) if err != nil { fmt.Println("Error getting leaderboard") - return leaderboard, err + return nil, err } defer resp.Body.Close() body, err = ioutil.ReadAll(resp.Body) if err != nil { fmt.Println("Error reading response body.") - return leaderboard, err + return nil, err } - err = json.Unmarshal(body, &leaderboard) + strBody := string(body) + strBody = strings.ReplaceAll(strBody, "\"last_star_ts\":0", "\"last_star_ts\":\"0\"") + err = json.Unmarshal([]byte(strBody), &leaderboard) if err != nil { fmt.Println("Error on json unmarshal") - return leaderboard, err + fmt.Println(err.Error()) + return nil, err } for k, mbr := range leaderboard.Members { mbr.LastStarTs, err = time.Parse("2006-01-02T15:04:05-0700", mbr.RawStarTs) diff --git a/go.mod b/go.mod index 9c87433..6aca777 100644 --- a/go.mod +++ b/go.mod @@ -5,3 +5,5 @@ require ( github.com/br0xen/boltease v0.0.0-20170907120147-8d9019e01b5d golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc ) + +go 1.13