Пример #1
0
        public static Result <FiveDaysForecastResult> GetWeatherForecast(JObject response)
        {
            var error = GetServerErrorFromResponse(response);

            if (!String.IsNullOrEmpty(error))
            {
                return(new Result <FiveDaysForecastResult>(null, false, error));
            }


            var weatherForecasts = new List <FiveDaysForecastResult>();

            var responseItems = JArray.Parse(response["list"].ToString());

            foreach (var item in responseItems)
            {
                var weatherForecast = new FiveDaysForecastResult();
                if (response["city"] != null)
                {
                    weatherForecast.City    = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(response["city"]["name"])));
                    weatherForecast.Country = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(response["city"]["country"])));
                    weatherForecast.CityId  = Convert.ToInt32(response["city"]["id"]);
                }

                if (item["weather"] != null)
                {
                    weatherForecast.Title       = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(item["weather"][0]["main"])));
                    weatherForecast.Description = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(item["weather"][0]["description"])));
                    weatherForecast.Icon        = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(item["weather"][0]["icon"])));
                }

                if (item["main"] != null)
                {
                    weatherForecast.Temp     = Convert.ToDouble(item["main"]["temp"]);
                    weatherForecast.TempMax  = Convert.ToDouble(item["main"]["temp_max"]);
                    weatherForecast.TempMin  = Convert.ToDouble(item["main"]["temp_min"]);
                    weatherForecast.Humidity = Convert.ToDouble(item["main"]["humidity"]);
                }

                if (item["wind"] != null)
                {
                    weatherForecast.WindSpeed = Convert.ToDouble(item["wind"]["speed"]);
                }

                if (item["clouds"] != null)
                {
                    weatherForecast.Clouds = Convert.ToDouble(item["clouds"]["all"]);
                }
                weatherForecast.Date           = Convert.ToDateTime(item["dt_txt"]);
                weatherForecast.DateUnixFormat = Convert.ToInt32(item["dt"]);

                weatherForecasts.Add(weatherForecast);
            }

            return(new Result <FiveDaysForecastResult>(weatherForecasts, true, TimeHelper.MessageSuccess));
        }
Пример #2
0
        public static string GetWeather()
        {
            ClientSettings.SetApiKey("bd5e378503939ddaee76f12ad7a97608");   // 865190f17e5a219e99d7ce1336df43ba -- Our own
            var result  = CurrentWeather.GetByCityName("Toronto", "Canada", "en", "metric");
            var result2 = FiveDaysForecast.GetByCityName("Toronto", "Canada", "en", "metric");

            // Formation
            if (result.Success)
            {
                // Five day average
                double average = Math.Round(result2.Items.Average(item => item.Temp), 2, MidpointRounding.AwayFromZero);
                // Check rain in tomorrow
                FiveDaysForecastResult temp = result2.Items.Take(7).First(item => item.Description.Contains("rain"));
                string rainForecast         = (temp != null) ? "Tomorrow will have rain, remember to bring an umbrella." : "";
                // Generate output string
                string resultString = string.Format("Current weather in {0}, is {1}; Windspeed {2} meter per second, Temperature {3} degrees.\n Average temperature in next fives days are: {4} degrees. {5}",
                                                    result.Item.City, result.Item.Description, result.Item.WindSpeed, result.Item.Temp, average, rainForecast);
                return(resultString);
            }

            return(null);
        }