/// <summary> /// Attempts to get a token of the given type. /// </summary> /// <returns>The result of the search.</returns> public TokenResult GetToken() { TokenResult result = tokenSource.GetToken(); if (result != null) { tokens.Add(result); } return(result); }
public Token GetToken(bool refresh = false) { bool IsTokenValid() { // subtract 10 seconds from valid until date time to make sure token is renewed before expiry return(_token != null && _token.ValidUntil.AddSeconds(-ForceTokenRenewalBeforeExpirationInSeconds) > DateTime.UtcNow); } if (!IsTokenValid() || refresh) { lock (_tokenLock) { // to verify we don't refresh right after previous lock's been released if (!IsTokenValid() || refresh) { Logger.LogInformation("Token in cache is expired or not set, retrieve a new one"); _token = _actualTokenSource.GetToken(); } } } return(_token); }