コード例 #1
0
        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 = "&deg;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);
        }
コード例 #2
0
        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();
                }
            }
        }