Пример #1
0
        public void GetWeatherTest()
        {
            // Чистим файлы с погодными данными
            List<string> weatherLogList = new List<string>();
            weatherLogList.Add("../../Test_Data/GetWeatherTest/yahoo.txt");
            weatherLogList.Add("../../Test_Data/GetWeatherTest/yandex.txt");
            foreach (string logfile in weatherLogList)
                using (StreamWriter writer =
                        new StreamWriter(logfile))
                {
                    writer.Write("");
                }

            // Список городов для сбора погодных данных
            List<City> citylist = new List<City>();
            Dictionary<string, string> idlist = new Dictionary<string, string>();
            // Челябинск
            idlist["Yahoo"] = "1997422";
            idlist["Yandex"] = "28642";
            City city1 = new City("Челябинск", idlist);
            citylist.Add(city1);
            // Москва
            idlist["Yahoo"] = "2122265";
            idlist["Yandex"] = "27612";
            City city2 = new City("Москва", idlist);
            citylist.Add(city2);
            
            // Собираем погодные данные для списка городов
            LittleLogger logger =
                new LittleLogger("../../Test_Data/GetWeatherTest/log.txt");
            WeatherService wService = new WeatherService(logger);
            WeatherReader wReader = new WeatherReader(logger);
            foreach (City city in citylist)
            {
                // Погода с Yahoo! Weather
                wService.WeatherData = wReader.getYahooWeather(city);
                using (StreamWriter writer = new StreamWriter(weatherLogList[0], true))
                {
                    writer.WriteLine(city.Name + ':');
                    foreach (var item in wService.WeatherData)
                        writer.WriteLine("{0}: {1}", item.Key, item.Value);
                    writer.WriteLine();
                }

                // Погода с Яндекс Погода
                wService.WeatherData = wReader.getYandexWeather(city);
                using (StreamWriter writer = new StreamWriter(weatherLogList[1], true))
                {
                    writer.WriteLine(city.Name + ':');
                    foreach (var item in wService.WeatherData)
                        writer.WriteLine("{0}: {1}", item.Key, item.Value);
                    writer.WriteLine();
                }
            }
        }
Пример #2
0
        // Метод для получения погодных данных с Yandex Погода
        // для города targetCity          
        public Dictionary<string, string> getYandexWeather(City targetCity)
        {
            // Используя API Яндекс Погода,
            // делаем запрос на погодный сервис методом GET,
            // http://export.yandex.ru/weather-ng/forecasts/city.xml
            // где city - ID города.
            // Получаем ответ в виде XML.
            // Парсим XML строку, чтобы найти дату, температуру,
            // атм. давление, влажность воздуха, хар. ветра, облачность
            WeatherService wService = new WeatherService(Logger);
            XElement root = XElement.Parse(
                wService.Request("http://export.yandex.ru/weather-ng/forecasts/"
                                      + targetCity.IDList["Yandex"] + ".xml"));

            try
            {
                wService.WeatherData = new Dictionary<string, string>();
                // Дата            
                wService.WeatherData.Add("Date",
                    root.Elements().ElementAt(0).Elements().ElementAt(3).Value.Insert(10, " "));
                // Температура
                wService.WeatherData.Add("Temperature",
                    root.Elements().ElementAt(0).Elements().ElementAt(4).Value + 'C');
                // Атмосферное давление
                wService.WeatherData.Add("Pressure",
                    root.Elements().ElementAt(0).Elements().ElementAt(24).Value + "мм. рт. столба");
                // Влажность воздуха
                wService.WeatherData.Add("Wetness",
                    root.Elements().ElementAt(0).Elements().ElementAt(23).Value + '%');
                // Ветер
                wService.WeatherData.Add("Wind", "Направление: " +
                    root.Elements().ElementAt(0).Elements().ElementAt(21).Value + " | "
                        + root.Elements().ElementAt(0).Elements().ElementAt(22).Value + "м/c");
                // Облачность
                wService.WeatherData.Add("Clouds",
                    root.Elements().ElementAt(0).Elements().ElementAt(9).Value);
            }
            catch (Exception exception)
            {
                // Делаем запись в лог файл                
                Logger.WriteLog(System.DateTime.Now.ToString()
                    + " "
                    + exception.TargetSite.ToString()
                    + " "
                    + exception.Message);                
            }

            return wService.WeatherData;
        }
Пример #3
0
        // Метод для получения погодных данных с Yahoo! Weather
        // для города targetCity         
        public Dictionary<string, string> getYahooWeather(City targetCity)
        {
            // Используя API Yahoo! Weather (https://developer.yahoo.com/weather/),
            // делаем запрос на погодный сервис методом GET,
            // где w - ID города, u - единицы измерения.
            // Получаем ответ в виде XML.
            // Парсим XML строку, чтобы найти дату, температуру,
            // атм. давление, влажность воздуха, хар. ветра, облачность
            WeatherService wService = new WeatherService(Logger);
            XElement root = XElement.Parse(
                wService.Request("http://weather.yahooapis.com/forecastrss?w="
                                      + targetCity.IDList["Yahoo"] + "&u=c"));

            try
            {
                wService.WeatherData = new Dictionary<string, string>();
                // Дата            
                wService.WeatherData.Add("Date",
                    root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("date").Value);
                // Температура
                wService.WeatherData.Add("Temperature",
                    root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("temp").Value
                    + "C");
                // Атмосферное давление
                wService.WeatherData.Add("Pressure",
                    root.Elements().ElementAt(0).Elements().ElementAt(9).Attribute("pressure").Value + "millibars");
                // Влажность воздуха
                wService.WeatherData.Add("Wetness",
                    root.Elements().ElementAt(0).Elements().ElementAt(9).Attribute("humidity").Value + '%');
                // Ветер
                wService.WeatherData.Add("Wind", "Direction: " +
                    root.Elements().ElementAt(0).Elements().ElementAt(8).Attribute("direction").Value + "deegres. | "
                        + root.Elements().ElementAt(0).Elements().ElementAt(8).Attribute("speed").Value + "km/h");
                // Облачность
                wService.WeatherData.Add("Clouds",
                    root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("text").Value);
            }
            catch (Exception exception)
            {
                // Делаем запись в лог файл                
                Logger.WriteLog(System.DateTime.Now.ToString()
                    + " "
                    + exception.TargetSite.ToString()
                    + " "
                    + exception.Message);                
            }

            return wService.WeatherData;
        }
        public void WeatherBotTest()
        {
            // Строки подключения к БД
            List<string> cnctstrlist = new List<string>();
            //Создаем подключение к БД и чистим таблицы БД            
            EntityConnectionStringBuilder ConnectionString = new EntityConnectionStringBuilder();
            ConnectionString.ProviderConnectionString =
                @"data source=../../Test_Data/WeatherBotTest/YahooWeatherDB.sqlite";
            ConnectionString.Provider = @"System.Data.SQLite";
            ConnectionString.Metadata =
                @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";
            cnctstrlist.Add(ConnectionString.ToString());
            LittleLogger logger =
                new LittleLogger("../../Test_Data/WeatherBotTest/log.txt");
            WeatherWriter wWriter = new WeatherWriter(logger);
            wWriter.ClearData(ConnectionString.ToString());
            ConnectionString.ProviderConnectionString =
                @"data source=../../Test_Data/WeatherBotTest/YandexWeatherDB.sqlite";
            cnctstrlist.Add(ConnectionString.ToString());
            wWriter.ClearData(ConnectionString.ToString());

            // Формируем список городов для мониторинга
            // погодных данных
            List<City> CityList = new List<City>();
            Dictionary<string, string> idlist = new Dictionary<string, string>();
            // Челябинск                            
            idlist["Yahoo"] = "1997422";
            idlist["Yandex"] = "28642";
            City city1 = new City("Челябинск", idlist);
            CityList.Add(city1);
            // Москва
            idlist["Yahoo"] = "2122265";
            idlist["Yandex"] = "27612";
            City city2 = new City("Москва", idlist);
            CityList.Add(city2);
            // Самара
            idlist["Yahoo"] = "2077746";
            idlist["Yandex"] = "28807";
            City city3 = new City("Самара", idlist);
            CityList.Add(city3);

            // Интервал сбора погодных данных
            int timeout = 0;                        

            // Создаем погодного бота для одноразовго сбора погодных данных
            WeatherBot wBot = new WeatherBot(CityList, timeout,
                                             logger, cnctstrlist);
            wBot.Start();
        }
Пример #5
0
        public void CityInitTest()
        {
            Dictionary<string, string> idlist1 = new Dictionary<string, string>();
            Dictionary<string, string> idlist2 = new Dictionary<string, string>();
         
            // Челябинск
            idlist1["Yahoo"] = "1997422";
            idlist1["Yandex"] = "28642";
            City city1 = new City("Челябинск", idlist1);            

            // Москва
            idlist2["Yahoo"] = "2122265";
            idlist2["Yandex"] = "27612";
            City city2 = new City("Москва", idlist2);

            // Сравниваем ожидаемые и фактические значения
            Assert.AreEqual("Челябинск", city1.Name);
            Assert.AreEqual("Москва", city2.Name);
            CollectionAssert.AreEqual(idlist1, city1.IDList);
            CollectionAssert.AreEqual(idlist2, city2.IDList);
        }