コード例 #1
0
            /// <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);
            }
コード例 #2
0
        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);
        }