public async Task <NetworkStatus <List <CovidCountryViewModel> > > LoadCountryCovidCases() { _covidCountryData.Clear(); var result = new NetworkStatus <List <CovidCountryViewModel> >(); var pageSourceResult = await _httpClientMgr.GetAsync(_covidCasesNowUrl); if (!pageSourceResult.Succeeded) { result.ErrorMessage = "Error loading content from " + _covidCasesNowUrl; result.ErrorCode = pageSourceResult.ErrorCode; return(result); } var parseSuccess = TryParseWorldometersSiteData(pageSourceResult.Result); if (!parseSuccess) { result.ErrorMessage = "Error parsing content from " + _covidCasesNowUrl; } else { result.Result = new List <CovidCountryViewModel>(); foreach (var c in _covidCountryData) { result.Result.Add(CovidCountryViewModel.Create(c)); } result.Succeeded = true; } return(result); }
public async Task <NetworkStatus <string> > GetAsync(string url) { var result = new NetworkStatus <string>() { Succeeded = false }; bool done = false; int retryCounts = 0; while (!done) { done = true; try { var response = await Client.GetAsync(url).ConfigureAwait(false); response.EnsureSuccessStatusCode(); result.Succeeded = true; result.Result = await response.Content.ReadAsStringAsync(); } catch (Exception ex) { result.ErrorCode = NetworkReturnUtils.ExceptionToReturnCode(ex); result.ErrorMessage = ex.Message; result.Ex = ex; if (result.ErrorCode == NetworkErrorCode.NetworkTimeout) { retryCounts++; if (retryCounts < _maxRetryIfNetworkTimeout) { done = false; } } } } return(result); }