Пример #1
0
        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);
        }
Пример #2
0
        // 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);
        }