mirror of
https://github.com/sstent/go-garth-cli.git
synced 2025-12-05 23:52:02 +00:00
60 lines
2.0 KiB
Go
60 lines
2.0 KiB
Go
package connect
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// Badge describes a badge.
|
|
type Badge struct {
|
|
ID int `json:"badgeId"`
|
|
Key string `json:"badgeKey"`
|
|
Name string `json:"badgeName"`
|
|
CategoryID int `json:"badgeCategoryId"`
|
|
DifficultyID int `json:"badgeDifficultyId"`
|
|
Points int `json:"badgePoints"`
|
|
TypeID []int `json:"badgeTypeIds"`
|
|
SeriesID int `json:"badgeSeriesId"`
|
|
Start Time `json:"badgeStartDate"`
|
|
End Time `json:"badgeEndDate"`
|
|
UserProfileID int `json:"userProfileId"`
|
|
FullName string `json:"fullName"`
|
|
DisplayName string `json:"displayName"`
|
|
EarnedDate Time `json:"badgeEarnedDate"`
|
|
EarnedNumber int `json:"badgeEarnedNumber"`
|
|
Viewed bool `json:"badgeIsViewed"`
|
|
Progress float64 `json:"badgeProgressValue"`
|
|
Target float64 `json:"badgeTargetValue"`
|
|
UnitID int `json:"badgeUnitId"`
|
|
BadgeAssocTypeID int `json:"badgeAssocTypeId"`
|
|
BadgeAssocDataID string `json:"badgeAssocDataId"`
|
|
BadgeAssocDataName string `json:"badgeAssocDataName"`
|
|
EarnedByMe bool `json:"earnedByMe"`
|
|
RelatedBadges []Badge `json:"relatedBadges"`
|
|
Connections []Badge `json:"connections"`
|
|
}
|
|
|
|
// BadgeDetail will return details about a badge.
|
|
func (c *Client) BadgeDetail(badgeID int) (*Badge, error) {
|
|
// Alternative URL:
|
|
// https://connect.garmin.com/modern/proxy/badge-service/badge/DISPLAYNAME/earned/detail/BADGEID
|
|
URL := fmt.Sprintf("https://connect.garmin.com/modern/proxy/badge-service/badge/detail/v2/%d",
|
|
badgeID)
|
|
|
|
badge := new(Badge)
|
|
|
|
err := c.getJSON(URL, badge)
|
|
|
|
// This is interesting. Garmin returns 400 if an unknown badge is
|
|
// requested. We have no way of detecting that, so we silently changes
|
|
// the error to ErrNotFound.
|
|
if err == ErrBadRequest {
|
|
return nil, ErrNotFound
|
|
}
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return badge, nil
|
|
}
|