return err
}
- if err := c.Subscribe(ctx, "activities"); err != nil {
- return fmt.Errorf("c.Subscribe() = %v", err)
+ for _, collection := range []string{"activities", "sleep"} {
+ if err := c.Subscribe(ctx, collection); err != nil {
+ return fmt.Errorf("c.Subscribe(%q) = %v", collection, err)
+ }
+ log.Infof(ctx, "Successfully subscribed to %q", collection)
}
redirectURL := r.URL
for _, s := range subscriptions {
if s.CollectionType != "activities" {
+ log.Warningf(ctx, "ignoring collection type %q", s.CollectionType)
continue
}
wg.Add(1)
go func() {
+ defer wg.Done()
+
var distanceMeters float64
for _, d := range summary.Summary.Distances {
if d.Activity != "total" {
}
if err := gfitClient.SetDistance(ctx, distanceMeters, tm); err != nil {
errs = append(errs, fmt.Errorf("gfitClient.SetDistance(%d) = %v", distanceMeters, err))
+ return
}
- wg.Done()
}()
wg.Add(1)
wg.Done()
}()
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+
+ var activities []gfit.Activity
+ for _, a := range summary.Activities {
+ if !a.HasStartTime {
+ continue
+ }
+
+ startTime, err := time.ParseInLocation("2006-01-02T15:04", a.StartDate+"T"+a.StartTime, profile.Timezone)
+ if err != nil {
+ errs = append(errs, fmt.Errorf("gfitClient.SetActivities() = %v", err))
+ return
+ }
+ endTime := startTime.Add(time.Duration(a.Duration) * time.Millisecond)
+
+ activities = append(activities, gfit.Activity{
+ Start: startTime,
+ End: endTime,
+ Type: gfit.ParseFitbitActivity(a.Name),
+ })
+ }
+ if err := gfitClient.SetActivities(ctx, activities, tm); err != nil {
+ errs = append(errs, fmt.Errorf("gfitClient.SetActivities() = %v", err))
+ return
+ }
+ }()
+
wg.Wait()
if len(errs) != 0 {