refreshBeforeExpiration introduced
This commit is contained in:
		
							
								
								
									
										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) | ||||
| 	} | ||||
|  | ||||
| 	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.refreshToken = authTokenResponse.Result.RefreshToken | ||||
|  | ||||
| @ -166,12 +166,18 @@ func (api *Api) AuthToken(authCode string) (*model.AuthTokenResponse, error) { | ||||
| 	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 { | ||||
| 		select { | ||||
| 		case <-ctx.Done(): | ||||
| 			return nil | ||||
| 		case <-time.After(time.Until(api.expiration)): | ||||
| 		case <-time.After(time.Until(api.expiration.Add(-refreshBeforeExpiration))): | ||||
| 			if err := api.Refresh(); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| @ -206,7 +212,7 @@ func (api *Api) Refresh() error { | ||||
| 		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.refreshToken = response.Result.RefreshToken | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user