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(); } }
// 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()); }
public Task <AccessToken> GetTokenAsync(CancellationToken cancellationToken) { return(_retryPolicy.ExecuteAsync( ct1 => _circuitBreakerPolicy.ExecuteAsync( ct2 => _oAuthTokenService.GetTokenAsync(ct2), ct1), cancellationToken)); }