public WeatherNodes GetXMLForWeather(WeatherLocation i_Location)
        {
            bool          foundWeather  = false;
            XmlReader     reader        = null;
            XmlSerializer serializerObj = null;
            WeatherNodes  loadedObj     = null;

            ///Try with the event location first,if not found get the default
            while (foundWeather == false)
            {
                string url = string.Format(@"http://api.openweathermap.org/data/2.5/forecast?q={0},{1}&units=metric&mode=xml&appid=d6c795304f427b8b78559ab660464d80", i_Location.City, i_Location.CountryIsoCode);
                try
                {
                    reader        = XmlReader.Create(url);
                    foundWeather  = true;
                    serializerObj = new XmlSerializer(typeof(WeatherNodes));
                    loadedObj     = (WeatherNodes)serializerObj.Deserialize(reader);
                }
                catch (Exception ex)
                {
                    ////Handle case for city not found from this API:
                    if (ex is WebException)
                    {
                        WebException webExp = ex as WebException;

                        if (!(webExp == null) && ((WebException)ex).Status == WebExceptionStatus.ProtocolError)
                        {
                            HttpWebResponse resp = webExp.Response as HttpWebResponse;

                            if (resp != null && resp.StatusCode == HttpStatusCode.NotFound)
                            {
                                MessageBox.Show(string.Format("Sorry could not get weather for {0} fetching weather for {1} instead)", i_Location.City, k_defaultCity));
                                ResetToDefaultCity(i_Location);
                            }
                        }
                    }
                    else
                    {
                        throw ex;
                    }
                }
                finally
                {
                    reader.Close();
                }
            }

            return(loadedObj);
        }
예제 #2
0
        private void getWeatherForEvent(Event i_SelectedEvent)
        {
            WeatherLocation location = new WeatherLocation();

            getLocationForWeather(i_SelectedEvent, location);
            WeatherNodes loadedObj    = FacebookManager.GetXMLForWeather(location);
            Weather      eventWeather = null;

            foreach (Weather obj in loadedObj.WeatherList)
            {
                if (i_SelectedEvent.StartTime >= obj.FromTime && i_SelectedEvent.StartTime <= obj.ToTime)
                {
                    eventWeather = obj;
                }
            }

            recommendForWeather(i_SelectedEvent, eventWeather);
            pictureBoxWeatherIcon.Load(string.Format("http://openweathermap.org/img/w/{0}.png", eventWeather.WeatherSymbol.WeatherCode));
            pictureBoxEvent.Load(i_SelectedEvent.PictureLargeURL);
            panelEventDetails.Visible = true;
        }