public static WeatherViewModel getLocalWeather(String UserIP) { String JSonContent = String.Empty; int DelayHours = 0; //If local server set it to dubai address MaxMind.GeoIP2.Responses.CityResponse city = new MaxMind.GeoIP2.Responses.CityResponse(); var WeatherView = new WeatherViewModel(); WeatherView.Forecast = new List <Forcast>(); String DatabaseLocation = HttpContext.Current.Server.MapPath("/GeoLiteCity/GeoLite2-City.mmdb"); using (var reader = new DatabaseReader(DatabaseLocation)) { // Replace "City" with the appropriate method for your database, e.g., // "Country". try { city = reader.City(UserIP); WeatherView.Country = city.Country.Name; // 'United States' WeatherView.City = city.City.Name; } catch { //do any error processing } }//using(var reader) if (String.IsNullOrEmpty(WeatherView.Country)) { WeatherView.Country = "United Arab Emirates"; } if (String.IsNullOrEmpty(WeatherView.City)) { WeatherView.City = "Dubai"; } do { String CacheFile = getWeatherFile(WeatherView.Country, WeatherView.City, DelayHours); if (!File.Exists(CacheFile)) { JSonContent = DownloadWeatherInfo(WeatherView.Country, WeatherView.City, CacheFile); } else { JSonContent = File.ReadAllText(CacheFile); } DelayHours = DelayHours - 4; } while (JSonContent.Length <= 10); dynamic WeatherInfo = System.Web.Helpers.Json.Decode(JSonContent); if (WeatherInfo != null) { var WeatherNow = WeatherInfo.data.current_condition[0]; WeatherView.ConditionText = WeatherNow.weatherDesc[0].value; WeatherView.ConditionCode = WeatherNow.weatherCode; WeatherView.Speed = WeatherNow.windspeedKmph; WeatherView.ConditionTemperature = Util.toDouble(WeatherNow.temp_C).ToString("0.0"); if (WeatherView.ConditionTemperature == "0.0") { Double Temp = (Util.toDouble(WeatherNow.temp_F) - 32) / 1.8; WeatherView.ConditionTemperature = Temp.ToString("0.0"); } WeatherView.TemperatureUnit = "°C"; WeatherView.Pressure = Util.toDouble(WeatherNow.pressure); WeatherView.Wind = WeatherNow.windspeedKmph; WeatherView.Direction = WeatherNow.winddirDegree; WeatherView.Visibility = Util.toDouble(WeatherNow.visibility); WeatherView.Humidity = WeatherNow.humidity; foreach (var ForcastDay in WeatherInfo.data.weather) { var thisForcast = new Forcast { Code = Util.toInt(ForcastDay.hourly[3].weatherCode), Date = (DateTime.Parse(ForcastDay.date)).ToString("dd MMM"), status = ForcastDay.hourly[3].weatherDesc[0].value, TempHigh = ForcastDay.maxtempC, TempLow = ForcastDay.mintempC }; WeatherView.Forecast.Add(thisForcast); } } //var intAddress = BitConverter.ToInt64(IPAddress.Parse(UserIP).GetAddressBytes(), 0); return(WeatherView); }
public static void WeatherApi(string location, System.Security.Principal.IPrincipal User, ApplicationDbContext context) { List <string> paramaters = new List <string>(); paramaters.Add("daily-high-temperature"); paramaters.Add("daily-low-temperature"); paramaters.Add("daily-precipitation"); List <seriesItem> allData = new List <seriesItem>(); List <seriesItem> DayOne = new List <seriesItem>(); List <seriesItem> DayTwo = new List <seriesItem>(); List <seriesItem> DayThree = new List <seriesItem>(); List <seriesItem> DayFour = new List <seriesItem>(); List <seriesItem> DayFive = new List <seriesItem>(); //find a way to enter peramater for search foreach (var paramater in paramaters) { var client = new RestClient("https://insight.api.wdtinc.com/" + paramater + location); var request = new RestRequest(Method.GET); request.AddHeader("postman-token", "586e3421-1f96-a0fd-f4d7-5af711fba4e3"); request.AddHeader("cache-control", "no-cache"); request.AddHeader("authorization", "Basic NjhmODM5MGE6ZDBmNTc2ZjM3MjYxZTk4NWUzZmE4YTk3YTZlMDUyNTg="); IRestResponse <WeatherData> response = client.Execute <WeatherData>(request); if (response.StatusCode == System.Net.HttpStatusCode.OK) { var listTempData = response.Data.series; foreach (var item in listTempData) { allData.Add(item); } } } foreach (var item in allData) { if (item.validDate == allData[0].validDate) { DayOne.Add(item); } else if (item.validDate == allData[1].validDate) { DayTwo.Add(item); } else if (item.validDate == allData[2].validDate) { DayThree.Add(item); } else if (item.validDate == allData[3].validDate) { DayFour.Add(item); } else if (item.validDate == allData[4].validDate) { DayFive.Add(item); } } for (int i = 0; i < 5; i++) { try { var day = (from data in context.Forcasts where data.ID == i + 1 select data).First(); day.Date = allData[i].validDate; if (i == 0) { day.Date = DayOne[0].validDate; day.HighTemp = float.Parse(DayOne[0].value); day.LowTemp = float.Parse(DayOne[1].value); day.Percipitation = float.Parse(DayOne[2].value); day.User = UserRetriever.RetrieveUser(User, context); } else if (i == 1) { day.Date = DayTwo[0].validDate; day.HighTemp = float.Parse(DayTwo[0].value); day.LowTemp = float.Parse(DayTwo[1].value); day.Percipitation = float.Parse(DayTwo[2].value); day.User = UserRetriever.RetrieveUser(User, context); } else if (i == 2) { day.Date = DayThree[0].validDate; day.HighTemp = float.Parse(DayThree[0].value); day.LowTemp = float.Parse(DayThree[1].value); day.Percipitation = float.Parse(DayThree[2].value); day.User = UserRetriever.RetrieveUser(User, context); } else if (i == 3) { day.Date = DayFour[0].validDate; day.HighTemp = float.Parse(DayFour[0].value); day.LowTemp = float.Parse(DayFour[1].value); day.Percipitation = float.Parse(DayFour[2].value); day.User = UserRetriever.RetrieveUser(User, context); } else if (i == 4) { day.Date = DayFive[0].validDate; day.HighTemp = float.Parse(DayFive[0].value); day.LowTemp = float.Parse(DayFive[1].value); day.Percipitation = float.Parse(DayFive[2].value); day.User = UserRetriever.RetrieveUser(User, context); } context.SaveChanges(); } catch { Forcast forcast = new Forcast(); forcast.ID = i + 1; forcast.Date = allData[i].validDate; context.Forcasts.Add(forcast); context.SaveChanges(); } } }