示例#1
0
        public void Update(WeatherInfo info)
        {
            Console.Write("Weather forecast: ");
            if (info.Temperature < 10)
            {
                Console.Write("Cold");
            }
            else if (info.Temperature < 25)
            {
                Console.Write("Warm");
            }
            else
            {
                Console.Write("Hot");
            }

            Console.Write(" and ");
            if (info.WindSpeed < 5)
            {
                Console.WriteLine("Windless");
            }
            else
            {
                Console.WriteLine("Windy");
            }

            Console.WriteLine();
        }
示例#2
0
 public void Notify(WeatherInfo info)
 {
     foreach (var observer in observers)
     {
         observer.Update(info);
     }
 }
示例#3
0
        public bool WeatherInCityChanged(string city, WeatherInfo weatherInfo)
        {
            bool   weatherIsChanged = true;
            string fileName         = Path.Combine(DatabaseCatalog, city + ".xml");

            // check the previous record about weather in gotten city
            if (File.Exists(fileName))
            {
                XmlSerializer reader              = new XmlSerializer(typeof(WeatherInfo));
                StreamReader  streamReader        = new StreamReader(fileName);
                WeatherInfo   previousWeatherInfo = (WeatherInfo)reader.Deserialize(streamReader);
                streamReader.Close();

                if (weatherInfo.Equals(previousWeatherInfo))
                {
                    weatherIsChanged = false;
                }
            }

            XmlSerializer writer       = new XmlSerializer(typeof(WeatherInfo));
            StreamWriter  streamWriter = new StreamWriter(fileName);

            writer.Serialize(streamWriter, weatherInfo);
            streamWriter.Close();

            return(weatherIsChanged);
        }
示例#4
0
        public WeatherInfo GetWeatherInfo(string city)
        {
            try
            {
                if (client == null)
                {
                    // can be some exception in static constructor or for example by time out
                    ClientInitialization();
                }

                var results = client.Query(city);

                WeatherInfo weatherInfo = new WeatherInfo
                {
                    Temperature = results.Main.Temperature.CelsiusCurrent,
                    Humidity    = results.Main.Humdity,
                    Pressure    = results.Main.Pressure,
                    City        = city
                };

                return(weatherInfo);
            }
            catch (Exception e)
            {
                throw new OpenWeatherAPIException("Can't get result at that time by connection to OpenWeatherMap", e);
            }
        }
示例#5
0
 public void OnWeatherChanged(string city, WeatherInfo weatherInfo)
 {
     if (weathersByCities.ContainsKey(city))
     {
         weathersByCities[city].Invoke(weatherInfo);
     }
 }
示例#6
0
 public void Update(WeatherInfo info)
 {
     Console.WriteLine("--- Street stand ---");
     Console.WriteLine($"Temperature: {info.Temperature}");
     Console.WriteLine($"Wind speed: {info.WindSpeed}");
     Console.WriteLine("--------------------");
     Console.WriteLine("          |         ");
     Console.WriteLine();
 }
示例#7
0
 public void DoMeasurements()
 {
     foreach (var city in weathersByCities.Keys)
     {
         OpenWeatherManager weatherManager = new OpenWeatherManager();
         try
         {
             WeatherInfo weatherInfo          = weatherManager.GetWeatherInfo(city);
             bool        weatherInCityChanged = weatherManager.WeatherInCityChanged(city, weatherInfo);
             if (weatherInCityChanged)
             {
                 OnWeatherChanged(city, weatherInfo);
             }
         }
         catch (OpenWeatherAPIException e)
         {
             Console.WriteLine("Problem with connection or credentials. Try later or check your credentials more accurate!");
             break;
         }
     }
 }
 public void Update(WeatherInfo weatherInfo)
 {
     Console.WriteLine($"Current conditions in the city {weatherInfo.ToString()}");
 }
示例#9
0
 public void Update(WeatherInfo info)
 {
     Console.WriteLine($"Gismeteo website: Temperature [{info.Temperature}], Wind speed [{info.WindSpeed}]\n");
 }