-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathusers.go
More file actions
157 lines (130 loc) · 4.25 KB
/
users.go
File metadata and controls
157 lines (130 loc) · 4.25 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package chessdotcomgo
import (
"net/http"
"strconv"
"github.com/ATTron/chessdotcom-go/util"
)
type UserInfo struct {
BasicInfo string `json:"basic_info"`
Stats string `json:"stats"`
OnlineStats string `json:"online"`
}
// GetTitledPlayers - Returns an array of all titled players of specific type (i.e. GM, WGM, IM, etc)
func GetTitledPlayers(title string) string {
reqURL := util.Join(util.BASE_URL, "/titled/", title)
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetUser - Returns basic info about a specific user
func GetUser(username string) string {
reqURL := util.Join(util.PLAYER_URL, username)
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetUserStats - Returns statistics about a specific user
func GetUserStats(username string) string {
reqURL := util.Join(util.PLAYER_URL, username, "/stats")
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetPlayerStatus (Currently Broken) - Returns T/F of players online status
func GetPlayerStatus(username string) string {
reqURL := util.Join(util.PLAYER_URL, username, "/is-online")
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetAllData - Return all user info in one object
func GetAllData(username string) UserInfo {
UI := UserInfo{}
UI.BasicInfo = GetUser(username)
UI.Stats = GetUserStats(username)
// currently online status is not working so omitting it here
// UI.OnlineStats = GetPlayerStatus(username)
return UI
}
// GetPlayerGames - Return current user games
func GetPlayerGames(username string) string {
reqURL := util.Join(util.PLAYER_URL, username, "/games")
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetPlayerGamesToMove - Return player who has to move
func GetPlayerGamesToMove(username string) string {
reqURL := util.Join(util.PLAYER_URL, username, "/games/to-move")
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetPlayerGamesMonthly - Return games the player has played in the past month
func GetPlayerGamesMonthly(username string) string {
reqURL := util.Join(util.PLAYER_URL, username, "/games/archives")
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetPlayerArchive - Return games the player has played in a specific month
func GetPlayerGamesArchive(username string, year int, month int) string {
reqURL := util.Join(util.PLAYER_URL, username, "/games/", strconv.Itoa(year), "/", strconv.Itoa(month))
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetPlayerGamesArchivePGN (Currently broken) - Return games the player has played in a specific month
func GetPlayerGamesArchivePGN(username string, year int, month int) string {
reqURL := util.Join(util.PLAYER_URL, username, "/games/", strconv.Itoa(year), "/", strconv.Itoa(month), "/pgn")
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetPlayerMatches - Returns list of team matches the player is currently registered in
func GetPlayerMatches(username string) string {
reqURL := util.Join(util.PLAYER_URL, username, "/matches")
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}
// GetPlayerTournaments
func GetPlayerTournaments(username string) string {
reqURL := util.Join(util.PLAYER_URL, username, "/tournaments")
resp, err := http.Get(reqURL)
util.Check(err)
defer resp.Body.Close()
returnResp, err := processRespJSON(resp)
util.Check(err)
return returnResp
}