mirror of
https://github.com/sstent/go-garth-cli.git
synced 2025-12-06 08:02:01 +00:00
57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
package connect
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// StressPoint is a measured stress level at a point in time.
|
|
type StressPoint struct {
|
|
Timestamp time.Time
|
|
Value int
|
|
}
|
|
|
|
// DailyStress is a stress reading for a single day.
|
|
type DailyStress struct {
|
|
UserProfilePK int `json:"userProfilePK"`
|
|
CalendarDate string `json:"calendarDate"`
|
|
StartGMT Time `json:"startTimestampGMT"`
|
|
EndGMT Time `json:"endTimestampGMT"`
|
|
StartLocal Time `json:"startTimestampLocal"`
|
|
EndLocal Time `json:"endTimestampLocal"`
|
|
Max int `json:"maxStressLevel"`
|
|
Average int `json:"avgStressLevel"`
|
|
Values []StressPoint
|
|
}
|
|
|
|
// DailyStress will retrieve stress levels for date.
|
|
func (c *Client) DailyStress(date time.Time) (*DailyStress, error) {
|
|
URL := fmt.Sprintf("https://connect.garmin.com/modern/proxy/wellness-service/wellness/dailyStress/%s",
|
|
formatDate(date))
|
|
|
|
if !c.authenticated() {
|
|
return nil, ErrNotAuthenticated
|
|
}
|
|
|
|
// We use a proxy object to deserialize the values to proper Go types.
|
|
var proxy struct {
|
|
DailyStress
|
|
StressValuesArray [][2]int64 `json:"stressValuesArray"`
|
|
}
|
|
|
|
err := c.getJSON(URL, &proxy)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
ret := &proxy.DailyStress
|
|
ret.Values = make([]StressPoint, len(proxy.StressValuesArray))
|
|
|
|
for i, point := range proxy.StressValuesArray {
|
|
ret.Values[i].Timestamp = time.Unix(point[0]/1000, 0)
|
|
ret.Values[i].Value = int(point[1])
|
|
}
|
|
|
|
return &proxy.DailyStress, nil
|
|
}
|