Documentation ¶
Index ¶
- Constants
- type Client
- func (c *Client) Authenticate() error
- func (c *Client) CreateFavorite(rideID string) error
- func (c *Client) CreateReservation(userID, workoutID string) error
- func (c *Client) GetInstructorByID(instructorID string) (Instructor, error)
- func (c *Client) GetSchedule(category string, start, end int) (Schedule, error)
- func (c *Client) GetUser() (User, error)
- func (c *Client) GetUserSchedule(category string, start, end int) ([]ScheduledWorkout, error)
- func (c *Client) GetUserWorkouts(userID string, limit int) (Workouts, error)
- func (c *Client) GetUserWorkoutsCSV(userID string) ([]WorkoutCSV, error)
- func (c *Client) RemoveFavorite(rideID string) error
- func (c *Client) RemoveReservation(reservationID string) error
- type FavoritesRequest
- type Instructor
- type Schedule
- type ScheduleRequest
- type ScheduledWorkout
- type User
- type Workout
- type WorkoutCSV
- type Workouts
Constants ¶
const ( // AuthEndpoint is the API endpoint for authentication AuthEndpoint = "auth/login" // MeEndpoint is the API endpoint for current user MeEndpoint = "api/me" // UserEndpoint is the API endpoint for users UserEndpoint = "api/user" // ReservationEndpoint is the API endpoint for reserving workouts ReservationEndpoint = "api/reservation" // FavoritesEndpoint is the API endpoint for favorites FavoritesEndpoint = "api/favorites" // InstructorEndpoint is the API endpoint for instructors InstructorEndpoint = "api/instructor" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client manages communication with Peloton API.
func (*Client) Authenticate ¶
Authenticate authenticates the client using username and password
func (*Client) CreateFavorite ¶
CreateFavorite adds workout to authenticated user's favorites
func (*Client) CreateReservation ¶
CreateReservation adds workout to user's reservations
func (*Client) GetInstructorByID ¶
func (c *Client) GetInstructorByID(instructorID string) (Instructor, error)
GetInstructorByID returns instrutor by ID
func (*Client) GetSchedule ¶
GetSchedule returns scheduled workouts for an date range
func (*Client) GetUserSchedule ¶
func (c *Client) GetUserSchedule(category string, start, end int) ([]ScheduledWorkout, error)
GetUserSchedule returns authenticated users's schedule
func (*Client) GetUserWorkouts ¶
GetUserWorkouts returns workouts for a given user
func (*Client) GetUserWorkoutsCSV ¶
func (c *Client) GetUserWorkoutsCSV(userID string) ([]WorkoutCSV, error)
GetUserWorkoutsCSV returns csv of all workouts for a given user
func (*Client) RemoveFavorite ¶
RemoveFavorite removes workout from authenticated user's favorites
func (*Client) RemoveReservation ¶
RemoveReservation removes a workout from a user's reservations
type FavoritesRequest ¶
type FavoritesRequest struct {
RideID string `json:"ride_id"`
}
FavoritesRequest contains data needed to request favorite
type Instructor ¶
type Instructor struct { ID string `json:"id"` FirstName string `json:"first_name"` LastName string `json:"last_name"` Disciplines []string `json:"fitness_disciplines"` Username string `json:"username"` }
Instructor defines the struct for the schedule object
type Schedule ¶
type Schedule struct { Total int `json:"total"` Count int `json:"count"` SortBy string `json:"sort_by"` Data []ScheduledWorkout `json:"data"` Equipment []struct { ID string `json:"id"` Name string `json:"name"` Slug string `json:"slug"` } `json:"equipment"` Instructors []struct { ID string `json:"id"` Name string `json:"name"` FirstName string `json:"first_name"` LastName string `json:"last_name"` UserID string `json:"user_id"` FitnessDisciplines []string `json:"fitness_disciplines"` } `json:"instructors"` RideTypes []struct { ID string `json:"id"` Name string `json:"name"` DisplayName string `json:"display_name"` FitnessDiscipline string `json:"fitness_discipline"` IsActive bool `json:"is_active"` ListOrder int `json:"list_order"` } `json:"ride_types"` ClassTypes []struct { ID string `json:"id"` Name string `json:"name"` DisplayName string `json:"display_name"` FitnessDiscipline string `json:"fitness_discipline"` IsActive bool `json:"is_active"` ListOrder int `json:"list_order"` } `json:"class_types"` Rides []struct { ClassTypeIds []string `json:"class_type_ids"` ContentProvider string `json:"content_provider"` ContentFormat string `json:"content_format"` Description string `json:"description"` DifficultyEstimate float64 `json:"difficulty_estimate"` OverallEstimate float64 `json:"overall_estimate"` DifficultyRatingAvg float64 `json:"difficulty_rating_avg"` DifficultyRatingCount int `json:"difficulty_rating_count"` DifficultyLevel interface{} `json:"difficulty_level"` Duration int `json:"duration"` EquipmentIds []string `json:"equipment_ids"` EquipmentTags []interface{} `json:"equipment_tags"` ExtraImages []interface{} `json:"extra_images"` FitnessDiscipline string `json:"fitness_discipline"` FitnessDisciplineDisplayName string `json:"fitness_discipline_display_name"` HasClosedCaptions bool `json:"has_closed_captions"` HasPedalingMetrics bool `json:"has_pedaling_metrics"` HomePelotonID string `json:"home_peloton_id"` ID string `json:"id"` ImageURL string `json:"image_url"` InstructorID string `json:"instructor_id"` IsArchived bool `json:"is_archived"` IsClosedCaptionShown bool `json:"is_closed_caption_shown"` IsExplicit bool `json:"is_explicit"` HasFreeMode bool `json:"has_free_mode"` IsLiveInStudioOnly bool `json:"is_live_in_studio_only"` Language string `json:"language"` OriginLocale string `json:"origin_locale"` Length int `json:"length"` LiveStreamID string `json:"live_stream_id"` LiveStreamURL interface{} `json:"live_stream_url"` Location string `json:"location"` Metrics []string `json:"metrics"` OriginalAirTime int `json:"original_air_time"` OverallRatingAvg float64 `json:"overall_rating_avg"` OverallRatingCount int `json:"overall_rating_count"` PedalingStartOffset int `json:"pedaling_start_offset"` PedalingEndOffset int `json:"pedaling_end_offset"` PedalingDuration int `json:"pedaling_duration"` Rating int `json:"rating"` RideTypeID string `json:"ride_type_id"` RideTypeIds []string `json:"ride_type_ids"` SampleVodStreamURL interface{} `json:"sample_vod_stream_url"` ScheduledStartTime int `json:"scheduled_start_time"` SeriesID string `json:"series_id"` SoldOut bool `json:"sold_out"` StudioPelotonID string `json:"studio_peloton_id"` Title string `json:"title"` TotalRatings int `json:"total_ratings"` TotalInProgressWorkouts int `json:"total_in_progress_workouts"` TotalWorkouts int `json:"total_workouts"` VodStreamURL interface{} `json:"vod_stream_url"` VodStreamID string `json:"vod_stream_id"` Captions []string `json:"captions"` } `json:"rides"` Limit interface{} `json:"limit"` BrowseCategories []struct { ID string `json:"id"` Name string `json:"name"` Slug string `json:"slug"` ListOrder int `json:"list_order"` IconURL string `json:"icon_url"` PortalImageURL string `json:"portal_image_url"` } `json:"browse_categories"` FitnessDisciplines []struct { ID string `json:"id"` Name string `json:"name"` } `json:"fitness_disciplines"` }
Schedule defines the struct for the schedule object
type ScheduleRequest ¶
ScheduleRequest contains data needed to request schedule
type ScheduledWorkout ¶
type ScheduledWorkout struct { ID string `json:"id"` RideID string `json:"ride_id"` ServerTime int `json:"server_time"` ScheduledStartTime int `json:"scheduled_start_time"` StartTime int `json:"start_time"` EndTime int `json:"end_time"` PedalingStartTime int `json:"pedaling_start_time"` PedalingEndTime int `json:"pedaling_end_time"` Status string `json:"status"` Countdown interface{} `json:"countdown"` IsLive bool `json:"is_live"` IsStudio bool `json:"is_studio"` IsEncore bool `json:"is_encore"` SecondsSinceStart interface{} `json:"seconds_since_start"` CreatedAt int `json:"created_at"` TotalWorkouts int `json:"total_workouts"` IsComplete bool `json:"is_complete"` TotalHomeReservations int `json:"total_home_reservations"` AuthedUserReservationID interface{} `json:"authed_user_reservation_id"` }
ScheduledWorkout contains data for a scheduled workout
type User ¶
type User struct { ID string `json:"id"` FirstName string `json:"first_name"` LastName string `json:"last_name"` Username string `json:"username"` Ftp int `json:"cycling_workout_ftp"` CustomMaxHr int `json:"customized_max_heart_rate"` TotalWorkouts int `json:"total_workouts"` DefaultMaxHr int `json:"default_max_heart_rate"` EstimatedFtp int `json:"estimated_cycling_ftp"` DefaultHrZones []float64 `json:"default_heart_rate_zones"` Birthday int `json:"birthday"` Location string `json:"location"` Height float64 `json:"height"` Weight float64 `json:"weight"` Gender string `json:"gender"` }
User defines the struct for the user object
type Workout ¶
type Workout struct { FitnessDiscipline string `json:"fitness_discipline"` Created int `json:"created_at"` EndTime int `json:"end_time"` ID string `json:"id"` StartTime int `json:"start_time"` UserID string `json:"user_id"` Status string `json:"status"` PersonalRecord bool `json:"is_total_work_personal_record"` }
Workout contains information about a specific workout
type WorkoutCSV ¶
type WorkoutCSV struct { WorkoutTimestamp string `csv:"Workout Timestamp"` LiveOnDemand string `csv:"Live/On-Demand"` InstructorName string `csv:"Instructor Name"` LengthMinutes string `csv:"Length (minutes)"` FitnessDiscipline string `csv:"Fitness Discipline"` Type string `csv:"Type"` Title string `csv:"Title"` ClassTimestamp string `csv:"Class Timestamp"` TotalOutput string `csv:"Total Output"` AvgWatts string `csv:"Avg. Watts"` AvgResistance string `csv:"Avg. Resistance"` AvgCadence string `csv:"Avg. Cadence (RPM)"` AvgSpeed string `csv:"Avg. Speed (mph)"` DistanceMiles string `csv:"Distance (mi)"` CaloriesBurned string `csv:"Calories Burned"` AvgHeartrate string `csv:"Avg. Heartrate"` AvgIncline string `csv:"Avg. Incline"` AvgPace string `csv:"Avg. Pace (min/mi)"` }
WorkoutCSV matches Peloton CSV export