in src/HttpRequestHelper/HttpClientHelper.cs [47:100]
private async Task<HttpResponseMessage> GetProjectDetailsHttpResponse(string Url)
{
NumberOfTries++;
AuthenticationResult authResult = null;
HttpResponseMessage response;
bool isException = false;
try
{
authResult = await AzureAuthenticationHandler.RetrieveAuthenticationToken();
}
catch (Exception exCacheTokenRetrieval)
{
throw new Exception($"Cached token retrieval failed: {exCacheTokenRetrieval.Message} Please re-login");
}
try
{
HttpClient httpClient = new HttpClient()
{
Timeout = TimeSpan.FromSeconds(45),
};
Uri baseAddress = new Uri(Url);
string clientRequestId = Guid.NewGuid().ToString();
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + authResult.AccessToken);
httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
httpClient.DefaultRequestHeaders.Add("x-ms-client-request-id", clientRequestId + "-azmigexp");
response = await httpClient.GetAsync(baseAddress);
}
catch (Exception exProjectDetailsHttpRequest)
{
isException = true;
if (NumberOfTries < HttpUtilities.MaxProjectDetailsRetries && HttpUtilities.IsRetryNeeded(null, exProjectDetailsHttpRequest))
{
Thread.Sleep(10000);
response = await GetProjectDetailsHttpResponse(Url);
}
else
throw;
}
if (!isException)
{
if((response == null || !response.IsSuccessStatusCode) && HttpUtilities.IsRetryNeeded(response, null) && NumberOfTries < HttpUtilities.MaxProjectDetailsRetries)
{
Thread.Sleep(10000);
response = await GetProjectDetailsHttpResponse(Url);
}
}
return response;
}