login.go
changeset 107 f0db7634e540
parent 89 8a7a33bec6e1
child 119 22c8c58ad61b
--- a/login.go	Thu Apr 13 13:44:09 2017 +0200
+++ b/login.go	Thu Apr 13 13:44:09 2017 +0200
@@ -3,18 +3,21 @@
 import (
 	"encoding/json"
 	"fmt"
+	"strings"
 
 	"github.com/sendgrid/rest"
 )
 
+// UserToken represents a user token as returned by the Mastodon API
 type UserToken struct {
-	Access_token string `json:"access_token"`
-	CreatedAt    int    `json:"created_at"`
-	Scope        string `json:"scope"`
-	TokenType    string `json:"token_type"`
+	AccessToken string `json:"access_token"`
+	CreatedAt   int    `json:"created_at"`
+	Scope       string `json:"scope"`
+	TokenType   string `json:"token_type"`
 }
 
-func (g *Client) LoginBasic(username, password string) error {
+// LoginBasic does basic user authentication
+func (g *Client) LoginBasic(username, password string, scopes []string) error {
 	if username == "" {
 		return fmt.Errorf("missing username")
 	}
@@ -26,13 +29,16 @@
 	opts := make(map[string]string)
 
 	hdrs["User-Agent"] = "Gondole/" + GondoleVersion
-	hdrs["Authorization"] = "Bearer %s" + g.Secret
+	hdrs["Authorization"] = "Bearer " + g.Secret
 
 	opts["grant_type"] = "password"
 	opts["client_id"] = g.ID
 	opts["client_secret"] = g.Secret
 	opts["username"] = username
 	opts["password"] = password
+	if len(scopes) > 0 {
+		opts["scope"] = strings.Join(scopes, " ")
+	}
 
 	req := rest.Request{
 		BaseURL:     g.InstanceURL + "/oauth/token",
@@ -48,7 +54,6 @@
 
 	var resp UserToken
 
-	println(r.Body)
 	err = json.Unmarshal([]byte(r.Body), &resp)
 	if err != nil {
 		return err