public async Task <TokenResponse> GetToken() { if (_tokenExpiry != null && _tokenExpiry.Value > DateTime.UtcNow.AddMinutes(1)) { return(_token); } await _refreshLock.WaitAsync(); try { if (_tokenExpiry != null && _tokenExpiry.Value > DateTime.UtcNow.AddMinutes(1)) { return(_token); } _logger.LogDebug("Refreshing token"); _token = await _provider.GetToken(); _tokenExpiry = DateTime.UtcNow.AddSeconds(_token.ExpiresIn); } finally { _refreshLock.Release(); } return(_token); }
private async Task <Uri> GetUriAndPrepClient(string relativeUrl) { if (!Uri.TryCreate(_baseUri, relativeUrl, out var uri)) { throw new Exception($"Error parsing baseUrl with relativeUrl '{relativeUrl}'"); } var token = await _microServiceTokenProvider.GetToken(); _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken); return(uri); }