}, nil
}
-func (c *Client) ActivitySummary(ctx context.Context, t time.Time) (*ActivitySummary, error) {
+func (c *Client) ActivitySummary(ctx context.Context, date string) (*ActivitySummary, error) {
url := fmt.Sprintf("https://api.fitbit.com/1/user/%s/activities/date/%s.json",
- c.fitbitUserID, t.Format("2006-01-02"))
+ c.fitbitUserID, date)
res, err := c.client.Get(url)
if err != nil {
return err
}
- profile, err := fitbitClient.Profile(ctx)
- if err != nil {
- return err
+ var (
+ wg = &sync.WaitGroup{}
+ errs appengine.MultiError
+ summary *fitbit.ActivitySummary
+ profile *fitbit.Profile
+ )
+
+ wg.Add(1)
+ go func() {
+ var err error
+ summary, err = fitbitClient.ActivitySummary(ctx, s.Date)
+ if err != nil {
+ errs = append(errs, fmt.Errorf("fitbitClient.ActivitySummary(%q) = %v", s.Date, err))
+ }
+ wg.Done()
+ }()
+
+ wg.Add(1)
+ go func() {
+ var err error
+ profile, err = fitbitClient.Profile(ctx)
+ if err != nil {
+ errs = append(errs, fmt.Errorf("fitbitClient.Profile(%q) = %v", s.Date, err))
+ }
+ wg.Done()
+ }()
+
+ wg.Wait()
+ if len(errs) != 0 {
+ return errs
}
- log.Debugf(ctx, "profile = %+v", profile)
tm, err := time.ParseInLocation("2006-01-02", s.Date, profile.Timezone)
if err != nil {
return err
}
- summary, err := fitbitClient.ActivitySummary(ctx, tm)
- if err != nil {
- return err
- }
log.Debugf(ctx, "%s (%s) took %d steps on %s",
- profile.Name, u.Email, summary.Summary.Steps, s.Date)
+ profile.Name, u.Email, summary.Summary.Steps, tm)
gfitClient, err := gfit.NewClient(ctx, u)
if err != nil {
return err
}
- var errs appengine.MultiError
- wg := &sync.WaitGroup{}
-
wg.Add(1)
go func() {
if err := gfitClient.SetSteps(ctx, summary.Summary.Steps, tm); err != nil {