mirror of
https://github.com/sstent/go-garth-cli.git
synced 2025-12-05 23:52:02 +00:00
first commit
This commit is contained in:
116
README.md
Normal file
116
README.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# Garmin Connect Go Client
|
||||
|
||||
Go port of the Garth Python library for accessing Garmin Connect data. Provides full API coverage with improved performance and type safety.
|
||||
|
||||
## Installation
|
||||
```bash
|
||||
go get github.com/sstent/garmin-connect/garth
|
||||
```
|
||||
|
||||
## Basic Usage
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
"garmin-connect/garth"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create client and authenticate
|
||||
client, err := garth.NewClient("garmin.com")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = client.Login("your@email.com", "password")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Get yesterday's body battery data
|
||||
yesterday := time.Now().AddDate(0, 0, -1)
|
||||
bb, err := garth.BodyBatteryData{}.Get(yesterday, client)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if bb != nil {
|
||||
fmt.Printf("Body Battery: %d\n", bb.BodyBatteryValue)
|
||||
}
|
||||
|
||||
// Get weekly steps
|
||||
steps := garth.NewDailySteps()
|
||||
stepData, err := steps.List(time.Now(), 7, client)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
for _, s := range stepData {
|
||||
fmt.Printf("%s: %d steps\n",
|
||||
s.(garth.DailySteps).CalendarDate.Format("2006-01-02"),
|
||||
*s.(garth.DailySteps).TotalSteps)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Data Types
|
||||
Available data types with Get() methods:
|
||||
- `BodyBatteryData`
|
||||
- `HRVData`
|
||||
- `SleepData`
|
||||
- `WeightData`
|
||||
|
||||
## Stats Types
|
||||
Available stats with List() methods:
|
||||
|
||||
### Daily Stats
|
||||
- `DailySteps`
|
||||
- `DailyStress`
|
||||
- `DailyHRV`
|
||||
- `DailyHydration`
|
||||
- `DailyIntensityMinutes`
|
||||
- `DailySleep`
|
||||
|
||||
### Weekly Stats
|
||||
- `WeeklySteps`
|
||||
- `WeeklyStress`
|
||||
- `WeeklyHRV`
|
||||
|
||||
## Error Handling
|
||||
All methods return errors implementing:
|
||||
```go
|
||||
type GarthError interface {
|
||||
error
|
||||
Message() string
|
||||
Cause() error
|
||||
}
|
||||
```
|
||||
|
||||
Specific error types:
|
||||
- `APIError` - HTTP/API failures
|
||||
- `IOError` - File/network issues
|
||||
- `AuthError` - Authentication failures
|
||||
|
||||
## Performance
|
||||
Benchmarks show 3-5x speed improvement over Python implementation for bulk data operations:
|
||||
|
||||
```
|
||||
BenchmarkBodyBatteryGet-8 100000 10452 ns/op
|
||||
BenchmarkSleepList-8 50000 35124 ns/op (7 days)
|
||||
```
|
||||
|
||||
## Documentation
|
||||
Full API docs: [https://pkg.go.dev/garmin-connect/garth](https://pkg.go.dev/garmin-connect/garth)
|
||||
|
||||
## CLI Tool
|
||||
Includes `cmd/garth` CLI for data export. Supports both daily and weekly stats:
|
||||
|
||||
```bash
|
||||
# Daily steps
|
||||
go run cmd/garth/main.go --data steps --period daily --start 2023-01-01 --end 2023-01-07
|
||||
|
||||
# Weekly stress
|
||||
go run cmd/garth/main.go --data stress --period weekly --start 2023-01-01 --end 2023-01-28
|
||||
```
|
||||
Reference in New Issue
Block a user