From b0d2c2f2d1c83c2db6b30b6d24441cb272fbfafa Mon Sep 17 00:00:00 2001 From: andig Date: Tue, 18 Jul 2023 16:15:39 +0200 Subject: [PATCH] chore: refactor forced token refresh --- util/oauth/helper.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/util/oauth/helper.go b/util/oauth/helper.go index 94f322be2..c9692f984 100644 --- a/util/oauth/helper.go +++ b/util/oauth/helper.go @@ -11,6 +11,9 @@ import ( func Refresh(log *util.Logger, token *oauth2.Token, ts oauth2.TokenSource, optMaxTokenLifetime ...time.Duration) { var failed int + // limit lifetime of initial token + limitTokenLife(token, optMaxTokenLifetime...) + for range time.Tick(5 * time.Minute) { if _, err := ts.Token(); err != nil { t, err := ts.Token() @@ -26,13 +29,21 @@ func Refresh(log *util.Logger, token *oauth2.Token, ts oauth2.TokenSource, optMa failed = 0 // limit lifetime of new tokens - if len(optMaxTokenLifetime) == 1 && t.Expiry != token.Expiry { + if t.Expiry != token.Expiry { token = t - maxTokenLifetime := optMaxTokenLifetime[0] - if time.Until(token.Expiry) > maxTokenLifetime { - token.Expiry = time.Now().Add(maxTokenLifetime) - } + limitTokenLife(token, optMaxTokenLifetime...) } } } } + +func limitTokenLife(token *oauth2.Token, optMaxTokenLifetime ...time.Duration) { + if len(optMaxTokenLifetime) != 1 { + return + } + + maxTokenLifetime := optMaxTokenLifetime[0] + if time.Until(token.Expiry) > maxTokenLifetime { + token.Expiry = time.Now().Add(maxTokenLifetime) + } +}