diff -r 519be52bfced -r abf0f5e40281 login.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/login.go Wed Apr 12 17:36:27 2017 +0200 @@ -0,0 +1,59 @@ +package gondole + +import ( + "encoding/json" + "fmt" + + "github.com/sendgrid/rest" +) + +type UserToken struct { + Access_token string `json:"access_token"` + CreatedAt int `json:"created_at"` + Scope string `json:"scope"` + TokenType string `json:"token_type"` +} + +func (g *Client) Login(username, password string) error { + if username == "" { + return fmt.Errorf("missing username") + } + if password == "" { + return fmt.Errorf("missing password") + } + + hdrs := make(map[string]string) + opts := make(map[string]string) + + hdrs["User-Agent"] = "Gondole/" + GondoleVersion + hdrs["Authorization"] = "Bearer %s" + g.Secret + + opts["grant_type"] = "password" + opts["client_id"] = g.ID + opts["client_secret"] = g.Secret + opts["username"] = username + opts["password"] = password + + req := rest.Request{ + BaseURL: g.InstanceURL + "/oauth/token", + Headers: hdrs, + QueryParams: opts, + Method: rest.Post, + } + + r, err := rest.API(req) + if err != nil { + return err + } + + var resp UserToken + + println(r.Body) + err = json.Unmarshal([]byte(r.Body), &resp) + if err != nil { + return err + } + + g.userToken = &resp + return nil +}