Unsubscribe from Fitbit subscriptions individually.
[kraftakt.git] / fitbit / fitbit.go
index c7a6aa7..775ab78 100644 (file)
@@ -17,7 +17,6 @@ import (
        "google.golang.org/appengine/log"
 )
 
-
 func oauthConfig() *oauth2.Config {
        return &oauth2.Config{
                ClientID:     app.Config.FitbitClientID,
@@ -193,21 +192,21 @@ func (c *Client) Subscribe(ctx context.Context, collection string) error {
 
        if res.StatusCode >= 400 && res.StatusCode != http.StatusConflict {
                data, _ := ioutil.ReadAll(res.Body)
-               log.Errorf(ctx, "creating subscription failed: status %d %q", res.StatusCode, data)
-               return fmt.Errorf("creating subscription failed")
+               log.Errorf(ctx, "creating %q subscription failed: status %d %q", collection, res.StatusCode, data)
+               return fmt.Errorf("creating %q subscription failed", collection)
        }
 
        return nil
 }
 
-func (c *Client) Unsubscribe(ctx context.Context) error {
+func (c *Client) Unsubscribe(ctx context.Context, collection string) error {
        subscriberID, err := c.appUser.ID(ctx)
        if err != nil {
                return err
        }
 
-       url := fmt.Sprintf("https://api.fitbit.com/1/user/%s/apiSubscriptions/%s.json",
-               c.fitbitUserID, subscriberID)
+       url := fmt.Sprintf("https://api.fitbit.com/1/user/%s/%s/apiSubscriptions/%s.json",
+               c.fitbitUserID, collection, subscriberID)
        req, err := http.NewRequest(http.MethodDelete, url, nil)
        if err != nil {
                return err
@@ -221,8 +220,8 @@ func (c *Client) Unsubscribe(ctx context.Context) error {
 
        if res.StatusCode >= 400 && res.StatusCode != http.StatusConflict {
                data, _ := ioutil.ReadAll(res.Body)
-               log.Errorf(ctx, "creating subscription failed: status %d %q", res.StatusCode, data)
-               return fmt.Errorf("deleting subscription failed")
+               log.Errorf(ctx, "deleting %q subscription failed: status %d %q", collection, res.StatusCode, data)
+               return fmt.Errorf("deleting %q subscription failed", collection)
        }
 
        return nil