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:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user