Esempio n. 1
0
        public async Task <AccessToken> GetTokenAsync(CancellationToken cancellationToken)
        {
            if (_accessToken != null && !_accessToken.IsExpired)
            {
                return(_accessToken);
            }

            await _semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);

            try
            {
                if (_accessToken != null && !_accessToken.IsExpired)
                {
                    return(_accessToken);
                }

                _accessToken = await _oAuthTokenService.GetTokenAsync(cancellationToken)
                               .ConfigureAwait(false);

                return(_accessToken);
            }
            finally
            {
                _semaphore.Release();
            }
        }
Esempio n. 2
0
        // GET: Default
        public async Task <ActionResult> Index(CancellationToken cancellationToken)
        {
            var accessToken = await _oAuthTokenService.GetTokenAsync(cancellationToken).ConfigureAwait(false);

            ViewBag.Token = accessToken;

            var dateTime = await GetDateTimeFromWebService(accessToken, cancellationToken).ConfigureAwait(false);

            ViewBag.Result = dateTime;

            return(View());
        }
Esempio n. 3
0
 public Task <AccessToken> GetTokenAsync(CancellationToken cancellationToken)
 {
     return(_retryPolicy.ExecuteAsync(
                ct1 => _circuitBreakerPolicy.ExecuteAsync(
                    ct2 => _oAuthTokenService.GetTokenAsync(ct2), ct1), cancellationToken));
 }