public async Task <IEnumerable <Country> > GetData() { var covid19Config = new Covid19ApiConfig(); _configuration.GetSection("Covid19ApiConfig").Bind(covid19Config); // Use list of "countries" because DataModel contains a list of countries List <Country> countries = new List <Country>(); using (HttpClient httpClient = new HttpClient()) { var responseString = await httpClient.GetStringAsync($"{covid19Config.BaseUrl}{covid19Config.RequestUrl}"); // Deserialize the Data Model countries = JsonConvert.DeserializeObject <Covid19ApiDataModel>(responseString).Countries; } countries.ForEach(async(country) => { var location = _locator.GetLocation(country.CountryCode); country.Location = location == null ? new LocationDataModel() { Latitude = 0, Longitude = 0 } : location; }); //sorts countries in back end countries.Sort((pair1, pair2) => pair2.TotalConfirmed.CompareTo(pair1.TotalConfirmed)); return(countries); }
// Added as specified by requirements, but changed to version below for efficiency /* * public async Task<IEnumerable<Covid19ApiDataModel>> GetDataAsync() * { * * var covid19ApiConfig = new Covid19ApiConfig(); * _configuration.GetSection("Covid19ApiConfig").Bind(covid19ApiConfig); * * List<Covid19ApiDataModel> covid19ApiDataModels = new List<Covid19ApiDataModel>(); * using (HttpClient httpClient = new HttpClient()) * { * var responseString = await httpClient.GetStringAsync($"{covid19ApiConfig.BaseUrl}{covid19ApiConfig.RequestUrl}"); * covid19ApiDataModels = JsonConvert.DeserializeObject<Covid19ApiDataModel>(responseString); * } * * * covid19ApiDataModels[0].Countries.ForEach(async (covid19ApiDataModel) => * { * * var location = _locator.GetLocationCovid19Api(covid19ApiDataModel.CountryCode); * covid19ApiDataModel.Location = location == null ? new LocationDataModel() { Latitude = 0, Longitude = 0 } : location; * * }); * * return covid19ApiDataModels; * } */ public async Task <Covid19ApiDataModel> GetDataAsync() { var covid19ApiConfig = new Covid19ApiConfig(); _configuration.GetSection("Covid19ApiConfig").Bind(covid19ApiConfig); Covid19ApiDataModel covid19ApiDataModels = new Covid19ApiDataModel(); using (HttpClient httpClient = new HttpClient()) { var responseString = await httpClient.GetStringAsync($"{covid19ApiConfig.BaseUrl}{covid19ApiConfig.RequestUrl}"); covid19ApiDataModels = JsonConvert.DeserializeObject <Covid19ApiDataModel>(responseString); } covid19ApiDataModels.Countries.ForEach(async(covid19ApiDataModel) => { var location = _locator.GetLocationCovid19Api(covid19ApiDataModel.CountryCode); covid19ApiDataModel.Location = location == null ? new LocationDataModel() { Latitude = 0, Longitude = 0 } : location; }); return(covid19ApiDataModels); }