Example #1
0
        /// <summary>
        /// Ensures the <see cref="Session" /> gets valid access token.
        /// </summary>
        internal async Task <AccessToken> GetValidAccessToken(bool forceRefresh = false)
        {
            try
            {
                ReauthenticateMutex.WaitOne();

                if (forceRefresh)
                {
                    AccessToken.Expire();
                }

                if (IsValidAccessToken())
                {
                    return(AccessToken);
                }

                await Reauthenticate();

                return(AccessToken);
            }
            finally
            {
                ReauthenticateMutex.Release();
            }
        }
Example #2
0
        protected virtual void Dispose(bool disposing)
        {
            if (!disposing)
            {
                return;
            }

            ReauthenticateMutex?.Dispose();
            RpcClient?.Dispose();
            HttpClient?.Dispose();
        }