Updates Containerize

This commit is contained in:
sjc
2025-05-07 23:50:46 -04:00
parent 67aa1221aa
commit 0b022d7623
9 changed files with 237 additions and 9 deletions

View File

@@ -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
}