コード例 #1
0
        public virtual 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)
                            {
                                throw new WeatherException(string.Format("Could not find selected event location! setting to default values({0}, {1}", DefaultCity, DefaultCountry));
                            }
                        }
                    }
                    else
                    {
                        throw ex;
                    }
                }
                finally
                {
                    if (reader != null)
                    {
                        reader.Close();
                    }
                }
            }

            return(loadedObj);
        }
コード例 #2
0
        private Weather findEventDetails(WeatherNodes i_LoadedObj, Event i_SelectedEvent)
        {
            Weather eventWeather = null;

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

            m_TempInfo.Add("WeatherCode", string.Format("http://openweathermap.org/img/w/{0}.png", eventWeather.WeatherSymbol.WeatherCode));

            return(eventWeather);
        }
コード例 #3
0
        public Dictionary <string, string> GetWeatherForEvent(Event io_SelectedEvent, bool i_IsDefaultLocation)
        {
            WeatherLocation location;

            m_TempInfo.Clear();
            if (i_IsDefaultLocation)
            {
                location = getDefaultLocation();
            }
            else
            {
                getLocationForWeather(io_SelectedEvent, out location);
            }

            WeatherNodes loadedObj = GetXMLForWeather(location);

            Weather eventWeather = findEventDetails(loadedObj, io_SelectedEvent);

            recommendForWeather(eventWeather);
            return(m_TempInfo);
        }