X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=kraftakt.go;h=4381596e25ffbeb632a47241576f7ede68d107d3;hb=0a346a38e86f8c40df7ab4e871b3a416e0783b39;hp=d53a3a35d810630f6d9e7979f00009fcb8af6f60;hpb=b0b4324f51ba7658e5e97b294ebd8ab7008d8f2a;p=kraftakt.git diff --git a/kraftakt.go b/kraftakt.go index d53a3a3..4381596 100644 --- a/kraftakt.go +++ b/kraftakt.go @@ -258,9 +258,13 @@ func fitbitNotifyHandler(ctx context.Context, w http.ResponseWriter, r *http.Req // Fitbit recommendation: "If signature verification fails, you should // respond with a 404" if !fitbit.CheckSignature(ctx, data, r.Header.Get("X-Fitbit-Signature")) { - log.Errorf(ctx, "signature mismatch") - w.WriteHeader(http.StatusNotFound) - return nil + /* + log.Errorf(ctx, "signature mismatch") + w.WriteHeader(http.StatusNotFound) + return nil + */ + } else { + log.Warningf(ctx, "TODO(octo): re-enable signature checking, see https://community.fitbit.com/t5/Web-API-Development/Push-notification-signatures-are-currently-invalid/m-p/2496159") } if err := delayedHandleNotifications.Call(ctx, data); err != nil { @@ -291,20 +295,20 @@ func handleNotifications(ctx context.Context, payload []byte) error { switch s.CollectionType { case "activities": wg.Add(1) - go func() { + go func(s fitbit.Subscription) { defer wg.Done() if err := activitiesNotification(ctx, &s); err != nil { log.Warningf(ctx, "activitiesNotification() = %v", err) } - }() + }(s) // copies s case "sleep": wg.Add(1) - go func() { + go func(s fitbit.Subscription) { defer wg.Done() if err := sleepNotification(ctx, &s); err != nil { log.Warningf(ctx, "sleepNotification() = %v", err) } - }() + }(s) // copies s default: log.Warningf(ctx, "ignoring collection type %q", s.CollectionType) @@ -433,7 +437,7 @@ func activitiesNotification(ctx context.Context, s *fitbit.Subscription) error { activities = append(activities, gfit.Activity{ Start: startTime, End: endTime, - Type: gfit.ParseFitbitActivity(a.Name), + Type: a.Name, }) } if err := gfitClient.SetActivities(ctx, activities, tm); err != nil { @@ -496,17 +500,19 @@ func sleepNotification(ctx context.Context, s *fitbit.Subscription) error { } switch stg.Level { case fitbit.SleepLevelDeep: - a.Type = 110 // Deep sleep + a.Type = "Deep sleep" case fitbit.SleepLevelLight: - a.Type = 109 // Light sleep + a.Type = "Light sleep" case fitbit.SleepLevelREM: - a.Type = 111 // REM sleep + a.Type = "REM sleep" case fitbit.SleepLevelWake: - a.Type = 112 // Awake (during sleep cycle) + a.Type = "Awake (during sleep cycle)" default: log.Warningf(ctx, "unexpected sleep level %v", stg.Level) continue } + + activities = append(activities, a) } wg.Wait()