projects
/
kraftakt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Connect handlers: don't call {fitbit,gfit}.NewClient().
[kraftakt.git]
/
gfit
/
gfit.go
diff --git
a/gfit/gfit.go
b/gfit/gfit.go
index
df7bd2c
..
ec88b19
100644
(file)
--- a/
gfit/gfit.go
+++ b/
gfit/gfit.go
@@
-19,8
+19,7
@@
import (
)
const (
)
const (
- csrfToken = "@CSRFTOKEN@"
- userID = "me"
+ userID = "me"
dataTypeNameCalories = "com.google.calories.expended"
dataTypeNameDistance = "com.google.distance.delta"
dataTypeNameCalories = "com.google.calories.expended"
dataTypeNameDistance = "com.google.distance.delta"
@@
-43,6
+42,10
@@
func oauthConfig() *oauth2.Config {
}
}
}
}
+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",
func Application(ctx context.Context) *fitness.Application {
return &fitness.Application{
Name: "Kraftakt",
@@
-51,12
+54,8
@@
func Application(ctx context.Context) *fitness.Application {
}
}
}
}
-func AuthURL() string {
- return oauthConfig().AuthCodeURL(csrfToken, oauth2.AccessTypeOffline)
-}
-
func ParseToken(ctx context.Context, r *http.Request, u *app.User) error {
func ParseToken(ctx context.Context, r *http.Request, u *app.User) error {
- if state := r.FormValue("state"); state !=
csrfToken
{
+ if state := r.FormValue("state"); state !=
u.Sign("Google")
{
return fmt.Errorf("invalid state parameter: %q", state)
}
return fmt.Errorf("invalid state parameter: %q", state)
}
@@
-70,6
+69,7
@@
func ParseToken(ctx context.Context, r *http.Request, u *app.User) error {
type Client struct {
*fitness.Service
type Client struct {
*fitness.Service
+ appUser *app.User
}
func NewClient(ctx context.Context, u *app.User) (*Client, error) {
}
func NewClient(ctx context.Context, u *app.User) (*Client, error) {
@@
-85,9
+85,14
@@
func NewClient(ctx context.Context, u *app.User) (*Client, error) {
return &Client{
Service: service,
return &Client{
Service: service,
+ appUser: u,
}, nil
}
}, nil
}
+func (c *Client) DeleteToken(ctx context.Context) error {
+ return c.appUser.DeleteToken(ctx, "Google")
+}
+
func DataStreamID(dataSource *fitness.DataSource) string {
fields := []string{
dataSource.Type,
func DataStreamID(dataSource *fitness.DataSource) string {
fields := []string{
dataSource.Type,