Refresh token unconditionally on authorization errors

This commit is contained in:
Gilbert Chen
2017-12-15 08:06:23 -05:00
parent 9fdff7b150
commit 36d7c583fa
2 changed files with 9 additions and 7 deletions

View File

@@ -82,7 +82,7 @@ func NewHubicClient(tokenFile string) (*HubicClient, error) {
CredentialLock: &sync.Mutex{}, CredentialLock: &sync.Mutex{},
} }
err = client.RefreshToken() err = client.RefreshToken(false)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -186,7 +186,7 @@ func (client *HubicClient) call(url string, method string, input interface{}, ex
return nil, 0, "", HubicError{Status: response.StatusCode, Message: "Authorization error when retrieving credentials"} return nil, 0, "", HubicError{Status: response.StatusCode, Message: "Authorization error when retrieving credentials"}
} }
err = client.RefreshToken() err = client.RefreshToken(true)
if err != nil { if err != nil {
return nil, 0, "", err return nil, 0, "", err
} }
@@ -210,11 +210,11 @@ func (client *HubicClient) call(url string, method string, input interface{}, ex
return nil, 0, "", fmt.Errorf("Maximum number of retries reached") return nil, 0, "", fmt.Errorf("Maximum number of retries reached")
} }
func (client *HubicClient) RefreshToken() (err error) { func (client *HubicClient) RefreshToken(force bool) (err error) {
client.TokenLock.Lock() client.TokenLock.Lock()
defer client.TokenLock.Unlock() defer client.TokenLock.Unlock()
if client.Token.Valid() { if !force && client.Token.Valid() {
return nil return nil
} }

View File

@@ -65,6 +65,8 @@ func NewOneDriveClient(tokenFile string) (*OneDriveClient, error) {
TokenLock: &sync.Mutex{}, TokenLock: &sync.Mutex{},
} }
client.RefreshToken(false)
return client, nil return client, nil
} }
@@ -154,7 +156,7 @@ func (client *OneDriveClient) call(url string, method string, input interface{},
return nil, 0, OneDriveError{Status: response.StatusCode, Message: "Authorization error when refreshing token"} return nil, 0, OneDriveError{Status: response.StatusCode, Message: "Authorization error when refreshing token"}
} }
err = client.RefreshToken() err = client.RefreshToken(true)
if err != nil { if err != nil {
return nil, 0, err return nil, 0, err
} }
@@ -178,11 +180,11 @@ func (client *OneDriveClient) call(url string, method string, input interface{},
return nil, 0, fmt.Errorf("Maximum number of retries reached") return nil, 0, fmt.Errorf("Maximum number of retries reached")
} }
func (client *OneDriveClient) RefreshToken() (err error) { func (client *OneDriveClient) RefreshToken(force bool) (err error) {
client.TokenLock.Lock() client.TokenLock.Lock()
defer client.TokenLock.Unlock() defer client.TokenLock.Unlock()
if client.Token.Valid() { if !force && client.Token.Valid() {
return nil return nil
} }