Updates Containerize
This commit is contained in:
58
sessions.go
58
sessions.go
@@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
@@ -15,8 +16,9 @@ type User struct {
|
||||
}
|
||||
|
||||
type AuthData struct {
|
||||
User User `json:"user"`
|
||||
SessionToken string `json:"session-token"`
|
||||
User User `json:"user"`
|
||||
SessionToken string `json:"session-token"`
|
||||
SessionExpire time.Time `json:"session-expiration"`
|
||||
RememberToken string `json:"remember-token"`
|
||||
}
|
||||
|
||||
@@ -59,9 +61,10 @@ func (api *TastytradeAPI) Authenticate2(username, password string, remember bool
|
||||
return err
|
||||
}
|
||||
|
||||
api.authToken = authResponse.Data.SessionToken
|
||||
if remember {
|
||||
api.remToken = authResponse.Data.RememberToken
|
||||
api.authToken = authResponse.Data.SessionToken
|
||||
api.authExpire = authResponse.Data.SessionExpire
|
||||
if (remember) {
|
||||
api.remToken = authResponse.Data.RememberToken
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -69,3 +72,48 @@ func (api *TastytradeAPI) Authenticate2(username, password string, remember bool
|
||||
func (api *TastytradeAPI) Authenticate(username, password string) error {
|
||||
return api.Authenticate2(username, password, false)
|
||||
}
|
||||
|
||||
// Redeem a remember token to get a session
|
||||
|
||||
func (api *TastytradeAPI) AuthRemember(remember bool) error {
|
||||
var remStr string
|
||||
if remember {
|
||||
remStr = "true"
|
||||
} else {
|
||||
remStr = "false"
|
||||
}
|
||||
authURL := fmt.Sprintf("%s/sessions", api.host)
|
||||
authData := map[string]string{
|
||||
"login": api.user,
|
||||
"remember-token": api.remToken,
|
||||
"remember-me": remStr,
|
||||
}
|
||||
authBody, err := json.Marshal(authData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
resp, err := api.httpClient.Post(authURL, "application/json", bytes.NewReader(authBody))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated {
|
||||
return fmt.Errorf("authentication failed: status code %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
authResponse := AuthResponse{}
|
||||
if err := json.NewDecoder(resp.Body).Decode(&authResponse); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
api.authToken = authResponse.Data.SessionToken
|
||||
if (remember) {
|
||||
api.remToken = authResponse.Data.RememberToken
|
||||
} else {
|
||||
api.remToken = ""
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user