mirror of
https://github.com/sstent/go-garth-cli.git
synced 2025-12-06 08:02:01 +00:00
95 lines
2.5 KiB
Go
95 lines
2.5 KiB
Go
package connect
|
|
|
|
// BadgeStatus is the badge status for a Connect user.
|
|
type BadgeStatus struct {
|
|
ProfileID int `json:"userProfileId"`
|
|
Fullname string `json:"fullName"`
|
|
DisplayName string `json:"displayName"`
|
|
ProUser bool `json:"userPro"`
|
|
ProfileImageURLLarge string `json:"profileImageUrlLarge"`
|
|
ProfileImageURLMedium string `json:"profileImageUrlMedium"`
|
|
ProfileImageURLSmall string `json:"profileImageUrlSmall"`
|
|
Level int `json:"userLevel"`
|
|
LevelUpdateTime Time `json:"levelUpdateDate"`
|
|
Point int `json:"userPoint"`
|
|
Badges []Badge `json:"badges"`
|
|
}
|
|
|
|
// BadgeLeaderBoard returns the leaderboard for points for the currently
|
|
// authenticated user.
|
|
func (c *Client) BadgeLeaderBoard() ([]BadgeStatus, error) {
|
|
URL := "https://connect.garmin.com/modern/proxy/badge-service/badge/leaderboard"
|
|
|
|
if !c.authenticated() {
|
|
return nil, ErrNotAuthenticated
|
|
}
|
|
|
|
var proxy struct {
|
|
LeaderBoad []BadgeStatus `json:"connections"`
|
|
}
|
|
|
|
err := c.getJSON(URL, &proxy)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return proxy.LeaderBoad, nil
|
|
}
|
|
|
|
// BadgeCompare will compare the earned badges of the currently authenticated user against displayName.
|
|
func (c *Client) BadgeCompare(displayName string) (*BadgeStatus, *BadgeStatus, error) {
|
|
URL := "https://connect.garmin.com/modern/proxy/badge-service/badge/compare/" + displayName
|
|
|
|
if !c.authenticated() {
|
|
return nil, nil, ErrNotAuthenticated
|
|
}
|
|
|
|
var proxy struct {
|
|
User *BadgeStatus `json:"user"`
|
|
Connection *BadgeStatus `json:"connection"`
|
|
}
|
|
|
|
err := c.getJSON(URL, &proxy)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
return proxy.User, proxy.Connection, nil
|
|
}
|
|
|
|
// BadgesEarned will return the list of badges earned by the curently
|
|
// authenticated user.
|
|
func (c *Client) BadgesEarned() ([]Badge, error) {
|
|
URL := "https://connect.garmin.com/modern/proxy/badge-service/badge/earned"
|
|
|
|
if !c.authenticated() {
|
|
return nil, ErrNotAuthenticated
|
|
}
|
|
|
|
badges := make([]Badge, 0, 200)
|
|
err := c.getJSON(URL, &badges)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return badges, nil
|
|
}
|
|
|
|
// BadgesAvailable will return the list of badges not yet earned by the curently
|
|
// authenticated user.
|
|
func (c *Client) BadgesAvailable() ([]Badge, error) {
|
|
URL := "https://connect.garmin.com/modern/proxy/badge-service/badge/available"
|
|
|
|
if !c.authenticated() {
|
|
return nil, ErrNotAuthenticated
|
|
}
|
|
|
|
badges := make([]Badge, 0, 200)
|
|
err := c.getJSON(URL, &badges)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return badges, nil
|
|
}
|