Package fitbit: Merge the "Data" and "ShortData" sleep stages.
[kraftakt.git] / app / user.go
index 9fe7e5d..563f449 100644 (file)
@@ -2,6 +2,9 @@ package app
 
 import (
        "context"
+       "crypto/hmac"
+       "crypto/sha1"
+       "encoding/hex"
        "fmt"
        "net/http"
        "sync"
@@ -100,7 +103,7 @@ func (u *User) OAuthClient(ctx context.Context, svc string, cfg *oauth2.Config)
 
        var tok oauth2.Token
        if err := datastore.Get(ctx, key, &tok); err != nil {
-               return nil, err
+               return nil, fmt.Errorf("datastore.Get(%v) = %v", key, err)
        }
 
        src := cfg.TokenSource(ctx, &tok)
@@ -116,6 +119,13 @@ func (u *User) String() string {
        return u.Email
 }
 
+func (u *User) Sign(payload string) string {
+       mac := hmac.New(sha1.New, []byte(u.ID))
+       mac.Write([]byte(payload))
+
+       return hex.EncodeToString(mac.Sum(nil))
+}
+
 type persistingTokenSource struct {
        ctx context.Context
        t   *oauth2.Token