public void ParseCurrentWeather() { var input = GetResource("Input.OpenWeatherMap.weather.json"); var provider = new OpenWeatherMapProvider(); var day = provider.ParseCurrentWeather(input); Assert.AreEqual(new DateTime(2019, 6, 4, 15, 52, 57), day.Date); Assert.AreEqual(day.Temperature.Celsius, 29.42, 0.01); Assert.AreEqual(WeatherCondition.FewClouds, day.Condition); Assert.AreEqual(RelativeHumidity.FromPercentage(0.6).Percentage, day.Humidity.Percentage, 0.1); Assert.IsNotNull(day.ApparentTemperature); var wind = day.Wind; Assert.AreEqual(Direction.East, wind.Direction); Assert.AreEqual(3.6, wind.Speed.KilometersPerHour, 0.1); }
public WeatherDay ParseCurrentWeather(String jsonString) { var json = JObject.Parse(jsonString); var main = json["main"]; var weather = json["weather"][0]; var wind = json["wind"]; var result = new WeatherDay() { Date = DateTimeOffset.FromUnixTimeSeconds(long.Parse(json["dt"].ToString())).DateTime, Temperature = Temperature.FromCelsius(double.Parse(main["temp"].ToString()) / 10), Humidity = RelativeHumidity.FromPercentage(double.Parse(main["humidity"].ToString()) / 100), Condition = OpenWeatherMapConditionParser.Parse(weather["icon"].ToString()), Wind = ParseWind(wind) }; result.ApparentTemperature = ApparentTemperatureCalculator.Calculate(result); return(result); }
public List <WeatherDay> ParseForecast(String forecastString) { var forecast = JsonConvert.DeserializeObject <OwmForecast>(forecastString); var result = new List <WeatherDay>(); foreach (var day in forecast.list) { result.Add(new WeatherDay() { Date = DateTimeOffset.FromUnixTimeSeconds(day.dt).DateTime, Condition = OpenWeatherMapConditionParser.Parse(day.weather[0].icon), Humidity = RelativeHumidity.FromPercentage(day.main.humidity), Temperature = Temperature.FromCelsius(day.main.temp / 10), Wind = new Wind() { Direction = DirectionParser.FromDegrees(day.wind.deg), Speed = Speed.FromKilometersPerHour(day.wind.speed) } }); } return(ForecastFilter.Filter(result)); }