-
Notifications
You must be signed in to change notification settings - Fork 0
/
getGamesOfMemberVSMember.go
85 lines (76 loc) · 2.27 KB
/
getGamesOfMemberVSMember.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package rating
import (
"bufio"
"encoding/json"
"github.com/NTNU-sondrbaa-2019/CLOUD-PROJECT/internal/pkg/database"
"log"
"net/http"
"strconv"
"time"
)
// Gets all matches between two members.
func getGamesOfMemberVSMember(member TeamMember, vsMember TeamMember) []Game {
var games [] Game
/*lastCreatedAt := 0
if member.InternalCreatedAt < vsMember.InternalCreatedAt {
lastCreatedAt = vsMember.InternalCreatedAt
} else {
lastCreatedAt = member.InternalCreatedAt
}
*/
// todo this since variable does not make sense. Can make other teams games disapear
since, err := database.SelectResultLastPlayedByLeagueID(member.LeagueID)
var sinceTime int
if err == nil && since != nil {
sinceTime = (int(since.UnixNano())/1000000) + 1000
log.Println("Unix epoch time in milliseconds:\t", sinceTime)
} else {
log.Println(err)
// TODO set to leagues start time
sinceTime = 1572607209000 // 01.11.2019
}
print(member.Username + "\t vs \t" + vsMember.Username + "\n")
request := "https://lichess.org/api/games/user/" + member.Username + "?vs=" + vsMember.Username + "&perftype=blitz,classical,rapid,correspondence&since=" + strconv.Itoa(sinceTime)
client := http.DefaultClient
response := getRequest(client, request)
if response.StatusCode == 429 {
log.Print("Rate limit on lichess.org reached. sleeping for " + strconv.Itoa(LICHESS_RATE_LIMIT) + " seconds...")
time.Sleep(LICHESS_RATE_LIMIT * time.Second) // Waiting over 1 min for lichess' rate limit
response = getRequest(client, request)
}
// START of code needed to parse the ndjson
reader := bufio.NewReader(response.Body)
line, err := reader.ReadBytes('\n')
if string(line) != "" {
if err != nil {
log.Print(err)
}
var tmp Game
err = json.Unmarshal(line, &tmp)
if err != nil {
log.Print("Unmarshall Error:")
log.Print(err)
}
games = append(games, tmp)
for {
if err != nil {
break
}
line, err := reader.ReadBytes('\n')
if err != nil {
break
}
print(line)
var tmp Game
err = json.Unmarshal(line, &tmp)
if err != nil {
log.Print("Unmarshall Error:")
log.Print(err)
}
//games = append(games, Game{"",1,"", {{{"Hyge", "Hyge"}}, {{"Hyge", "Hyge"}}}, "black"})
games = append(games, tmp)
}
}
// END of code needed to parse the ndjson
return games
}