}
}
+func AuthURL(ctx context.Context, u *app.User) string {
+ return oauthConfig().AuthCodeURL(u.Sign("Fitbit"), oauth2.AccessTypeOffline)
+}
+
func ParseToken(ctx context.Context, r *http.Request, u *app.User) error {
if state := r.FormValue("state"); state != u.Sign("Fitbit") {
return fmt.Errorf("invalid state parameter: %q", state)
}, nil
}
-func (c *Client) AuthURL(ctx context.Context) string {
- return oauthConfig().AuthCodeURL(c.appUser.Sign("Fitbit"), oauth2.AccessTypeOffline)
-}
-
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, date)
}
}
+func AuthURL(ctx context.Context, u *app.User) string {
+ return oauthConfig().AuthCodeURL(u.Sign("Google"), oauth2.AccessTypeOffline)
+}
+
func Application(ctx context.Context) *fitness.Application {
return &fitness.Application{
Name: "Kraftakt",
}, nil
}
-func (c *Client) AuthURL(ctx context.Context) string {
- return oauthConfig().AuthCodeURL(c.appUser.Sign("Google"), oauth2.AccessTypeOffline)
-}
-
func (c *Client) DeleteToken(ctx context.Context) error {
return c.appUser.DeleteToken(ctx, "Google")
}
}
func fitbitConnectHandler(ctx context.Context, w http.ResponseWriter, r *http.Request, u *app.User) error {
- c, err := fitbit.NewClient(ctx, "", u)
- if err != nil {
- return err
- }
-
- http.Redirect(w, r, c.AuthURL(ctx), http.StatusTemporaryRedirect)
+ http.Redirect(w, r, fitbit.AuthURL(ctx, u), http.StatusTemporaryRedirect)
return nil
}
}
func googleConnectHandler(ctx context.Context, w http.ResponseWriter, r *http.Request, u *app.User) error {
- c, err := gfit.NewClient(ctx, u)
- if err != nil {
- return err
- }
-
- http.Redirect(w, r, c.AuthURL(ctx), http.StatusTemporaryRedirect)
+ http.Redirect(w, r, gfit.AuthURL(ctx, u), http.StatusTemporaryRedirect)
return nil
}