Ejemplo n.º 1
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (!_tokenCache.TryGetToken(out var token))
            {
                token = await _tokenProviderClient.GetTokenAsync();

                _tokenCache.StoreToken(token);
            }

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);

            var retryCount = 0;
            HttpResponseMessage response;

            do
            {
                response = await base.SendAsync(request, cancellationToken);
            }while (response.StatusCode == HttpStatusCode.Unauthorized && retryCount++ < 1);

            return(response);
        }