Skip to content

Commit 4860b42

Browse files
committed
Update refresh token call in client
Signed-off-by: Marek Aufart <[email protected]>
1 parent dab0f9e commit 4860b42

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

binding/client.go

+28-23
Original file line numberDiff line numberDiff line change
@@ -681,31 +681,24 @@ func (r *Client) send(rb func() (*http.Request, error)) (response *http.Response
681681
err = liberr.Wrap(err)
682682
return
683683
}
684-
} else if r.refreshToken(response.StatusCode, request.URL.Path) {
685-
unAuthErr := errors.New("401 Unauthorized")
686-
if i < r.Retry {
687-
Log.Info("|401| Unauthorized, refreshing auth token.")
688-
token := api.Login{Refresh: r.token.Refresh}
689-
refreshErr := r.Post(api.AuthRefreshRoot, &token)
690-
if refreshErr != nil {
691-
Log.Error(refreshErr, "Token refresh failed.")
692-
time.Sleep(RetryDelay)
693-
} else {
694-
r.SetToken(token)
695-
}
696-
continue
697-
} else {
698-
r.Error = liberr.Wrap(unAuthErr)
699-
err = r.Error
700-
return
701-
}
702684
} else {
703685
Log.Info(
704686
fmt.Sprintf(
705687
"|%d| %s %s",
706688
response.StatusCode,
707689
request.Method,
708690
request.URL.Path))
691+
if response.StatusCode == http.StatusUnauthorized {
692+
refreshed, nErr := r.refreshToken(request)
693+
if nErr != nil {
694+
r.Error = liberr.Wrap(nErr)
695+
err = r.Error
696+
return
697+
}
698+
if refreshed {
699+
continue
700+
}
701+
}
709702
break
710703
}
711704
}
@@ -817,9 +810,21 @@ func (f *Field) disposition() (d string) {
817810
return
818811
}
819812

820-
func (r *Client) refreshToken(status int, path string) (refresh bool) {
821-
if status == 401 && !strings.HasSuffix(path, api.AuthRefreshRoot) && r.token.Refresh != "" {
822-
refresh = true
823-
}
824-
return
813+
// refreshToken refreshes the token.
814+
func (r *Client) refreshToken(request *http.Request) (refreshed bool, err error) {
815+
if r.token.Token == "" ||
816+
strings.HasSuffix(request.URL.Path, api.AuthRefreshRoot) {
817+
return
818+
}
819+
login := &api.Login{Refresh: r.token.Refresh}
820+
err = r.Post(api.AuthRefreshRoot, login)
821+
if err == nil {
822+
r.token.Token = login.Token
823+
refreshed = true
824+
return
825+
}
826+
if errors.Is(err, &RestError{}) {
827+
err = nil
828+
}
829+
return
825830
}

0 commit comments

Comments
 (0)