refreshBeforeExpiration introduced
This commit is contained in:
parent
b320c395df
commit
f732d0ed44
14
api.go
14
api.go
@ -67,7 +67,7 @@ func NewApi(config ApiConfig) (*Api, error) {
|
|||||||
return nil, fmt.Errorf("auth token request failed: %s", authTokenResponse.Message)
|
return nil, fmt.Errorf("auth token request failed: %s", authTokenResponse.Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
api.expiration = time.Now().Add(time.Duration(authTokenResponse.Result.ExpiresIn-1) * time.Second)
|
api.expiration = time.Now().Add(time.Duration(authTokenResponse.Result.ExpiresIn) * time.Second)
|
||||||
api.accessToken = authTokenResponse.Result.AccessToken
|
api.accessToken = authTokenResponse.Result.AccessToken
|
||||||
api.refreshToken = authTokenResponse.Result.RefreshToken
|
api.refreshToken = authTokenResponse.Result.RefreshToken
|
||||||
|
|
||||||
@ -166,12 +166,18 @@ func (api *Api) AuthToken(authCode string) (*model.AuthTokenResponse, error) {
|
|||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *Api) AutoRefresh(ctx context.Context) error {
|
func (api *Api) MustAutoRefresh(ctx context.Context, refreshBeforeExpiration time.Duration) {
|
||||||
|
if err := api.AutoRefresh(ctx, refreshBeforeExpiration); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *Api) AutoRefresh(ctx context.Context, refreshBeforeExpiration time.Duration) error {
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return nil
|
return nil
|
||||||
case <-time.After(time.Until(api.expiration)):
|
case <-time.After(time.Until(api.expiration.Add(-refreshBeforeExpiration))):
|
||||||
if err := api.Refresh(); err != nil {
|
if err := api.Refresh(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -206,7 +212,7 @@ func (api *Api) Refresh() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
api.expiration = time.Now().Add(time.Duration(response.Result.ExpiresIn-1) * time.Second)
|
api.expiration = time.Now().Add(time.Duration(response.Result.ExpiresIn) * time.Second)
|
||||||
api.accessToken = response.Result.AccessToken
|
api.accessToken = response.Result.AccessToken
|
||||||
api.refreshToken = response.Result.RefreshToken
|
api.refreshToken = response.Result.RefreshToken
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user