mirror of
https://github.com/sstent/go-garth-cli.git
synced 2025-12-06 08:02:01 +00:00
sync
This commit is contained in:
111
python-garmin-connect/Calendar.go
Normal file
111
python-garmin-connect/Calendar.go
Normal file
@@ -0,0 +1,111 @@
|
||||
package connect
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// CalendarYear describes a Garmin Connect calendar year
|
||||
type CalendarYear struct {
|
||||
StartDayOfJanuary int `json:"startDayofJanuary"`
|
||||
LeapYear bool `json:"leapYear"`
|
||||
YearItems []YearItem `json:"yearItems"`
|
||||
YearSummaries []YearSummary `json:"yearSummaries"`
|
||||
}
|
||||
|
||||
// YearItem describes an item on a Garmin Connect calendar year
|
||||
type YearItem struct {
|
||||
Date Date `json:"date"`
|
||||
Display int `json:"display"`
|
||||
}
|
||||
|
||||
// YearSummary describes a per-activity-type yearly summary on a Garmin Connect calendar year
|
||||
type YearSummary struct {
|
||||
ActivityTypeID int `json:"activityTypeId"`
|
||||
NumberOfActivities int `json:"numberOfActivities"`
|
||||
TotalDistance int `json:"totalDistance"`
|
||||
TotalDuration int `json:"totalDuration"`
|
||||
TotalCalories int `json:"totalCalories"`
|
||||
}
|
||||
|
||||
// CalendarMonth describes a Garmin Conenct calendar month
|
||||
type CalendarMonth struct {
|
||||
StartDayOfMonth int `json:"startDayOfMonth"`
|
||||
NumOfDaysInMonth int `json:"numOfDaysInMonth"`
|
||||
NumOfDaysInPrevMonth int `json:"numOfDaysInPrevMonth"`
|
||||
Month int `json:"month"`
|
||||
Year int `json:"year"`
|
||||
CalendarItems []CalendarItem `json:"calendarItems"`
|
||||
}
|
||||
|
||||
// CalendarWeek describes a Garmin Connect calendar week
|
||||
type CalendarWeek struct {
|
||||
StartDate Date `json:"startDate"`
|
||||
EndDate Date `json:"endDate"`
|
||||
NumOfDaysInMonth int `json:"numOfDaysInMonth"`
|
||||
CalendarItems []CalendarItem `json:"calendarItems"`
|
||||
}
|
||||
|
||||
// CalendarItem describes an activity displayed on a Garmin Connect calendar
|
||||
type CalendarItem struct {
|
||||
ID int `json:"id"`
|
||||
ItemType string `json:"itemType"`
|
||||
ActivityTypeID int `json:"activityTypeId"`
|
||||
Title string `json:"title"`
|
||||
Date Date `json:"date"`
|
||||
Duration int `json:"duration"`
|
||||
Distance int `json:"distance"`
|
||||
Calories int `json:"calories"`
|
||||
StartTimestampLocal Time `json:"startTimestampLocal"`
|
||||
ElapsedDuration float64 `json:"elapsedDuration"`
|
||||
Strokes float64 `json:"strokes"`
|
||||
MaxSpeed float64 `json:"maxSpeed"`
|
||||
ShareableEvent bool `json:"shareableEvent"`
|
||||
AutoCalcCalories bool `json:"autoCalcCalories"`
|
||||
ProtectedWorkoutSchedule bool `json:"protectedWorkoutSchedule"`
|
||||
IsParent bool `json:"isParent"`
|
||||
}
|
||||
|
||||
// CalendarYear will get the activity summaries and list of days active for a given year
|
||||
func (c *Client) CalendarYear(year int) (*CalendarYear, error) {
|
||||
URL := fmt.Sprintf("https://connect.garmin.com/modern/proxy/calendar-service/year/%d",
|
||||
year,
|
||||
)
|
||||
calendarYear := new(CalendarYear)
|
||||
err := c.getJSON(URL, &calendarYear)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return calendarYear, nil
|
||||
}
|
||||
|
||||
// CalendarMonth will get the activities for a given month
|
||||
func (c *Client) CalendarMonth(year int, month int) (*CalendarMonth, error) {
|
||||
URL := fmt.Sprintf("https://connect.garmin.com/modern/proxy/calendar-service/year/%d/month/%d",
|
||||
year,
|
||||
month-1, // Months in Garmin Connect start from zero
|
||||
)
|
||||
calendarMonth := new(CalendarMonth)
|
||||
err := c.getJSON(URL, &calendarMonth)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return calendarMonth, nil
|
||||
}
|
||||
|
||||
// CalendarWeek will get the activities for a given week. A week will be returned that contains the day requested, not starting with)
|
||||
func (c *Client) CalendarWeek(year int, month int, week int) (*CalendarWeek, error) {
|
||||
URL := fmt.Sprintf("https://connect.garmin.com/modern/proxy/calendar-service/year/%d/month/%d/day/%d/start/1",
|
||||
year,
|
||||
month-1, // Months in Garmin Connect start from zero
|
||||
week,
|
||||
)
|
||||
calendarWeek := new(CalendarWeek)
|
||||
err := c.getJSON(URL, &calendarWeek)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return calendarWeek, nil
|
||||
}
|
||||
Reference in New Issue
Block a user