-func (n *fitbitNotification) URLValues() url.Values {
- return url.Values{
- "CollectionType": []string{n.CollectionType},
- "Date": []string{n.Date},
- "OwnerID": []string{n.OwnerID},
- "OwnerType": []string{n.OwnerType},
- "SubscriptionID": []string{n.SubscriptionID},
- }
-}
-
-func (n *fitbitNotification) URL() string {
- return fmt.Sprintf("https://api.fitbit.com/1/user/%s/%s/date/%s.json",
- n.OwnerID, n.CollectionType, n.Date)
-}
-
-func checkSignature(ctx context.Context, payload []byte, rawSig string) bool {
- base64Sig, err := url.QueryUnescape(rawSig)
- if err != nil {
- log.Errorf(ctx, "QueryUnescape(%q) = %v", rawSig, err)
- return false
- }
- signatureGot, err := base64.StdEncoding.DecodeString(base64Sig)
- if err != nil {
- log.Errorf(ctx, "base64.StdEncoding.DecodeString(%q) = %v", base64Sig, err)
- return false
+func googleGrantHandler(ctx context.Context, w http.ResponseWriter, r *http.Request, u *app.User) error {
+ if err := gfit.ParseToken(ctx, r, u); err != nil {
+ return err