tsk-11: Obtain refresh token (#18)

Closes #11

Reviewed-on: #18
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
phoenix
2025-12-04 03:13:13 +00:00
committed by phoenix
parent a4fefd5bc6
commit 66c7fc261f
4 changed files with 78 additions and 24 deletions
+43
View File
@@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"net/http"
"time"
"git.kundeng.us/phoenix/textsender-models/tx0/token"
@@ -53,3 +54,45 @@ func (a *Auth) GetToken() (*token.Login, error) {
return r.Data[0], nil
}
type refreshTokenRequest struct {
AccessToken string `json:"access_token"`
}
func (a *Auth) GetRefreshToken(tok *token.Login) (*token.Login, error) {
req := refreshTokenRequest{AccessToken: tok.AccessToken}
jsonData, err := json.Marshal(req)
if err != nil {
return nil, err
}
resp, err := http.Post(fmt.Sprintf("%s/api/v1/token/refresh", a.Application.AuthUrl), "application/json", bytes.NewBuffer(jsonData))
if err != nil {
return nil, err
}
defer resp.Body.Close()
var r tokenResponse
err = json.NewDecoder(resp.Body).Decode(&r)
if err != nil {
return nil, err
} else {
if len(r.Data) == 0 {
return nil, nil
} else {
return r.Data[0], nil
}
}
}
func (s *Auth) TokenExpired(tok *token.Login) bool {
now := time.Now()
expiredTime := time.Unix(tok.ExpiresIn, 0)
if now.After(expiredTime) {
return true
} else {
return false
}
}