private XmlDocument getReport(string reportURL, DateTime startTimeStamp = default(DateTime))
{
//initialize startDateTime it was not passed as parameter
if (startTimeStamp == default(DateTime)) startTimeStamp = DateTime.Now;
var client = settings.getHttpClient();
//we try for 5 seconds
if ((DateTime.Now - startTimeStamp).Seconds < 5)
{
var response = client.GetAsync(reportURL).Result;
if (response.IsSuccessStatusCode)
{
StreamReader reader = new StreamReader(response.Content.ReadAsStreamAsync().Result);
string responseText = reader.ReadToEnd();
XmlDocument xmlResponse = new XmlDocument();
xmlResponse.LoadXml(responseText);
return xmlResponse;
}
else
{
//not successful, wait for half a second to try again
Thread.Sleep(500);
return getReport(reportURL,startTimeStamp);
}
}
else
{
//timedout
return null;
}
}