public override WeatherDataContainer?ParseJSONObject(string json) { try { using (JsonDocument doc = JsonDocument.Parse(json)) { var weather = doc.RootElement .GetProperty("data") .GetProperty("timelines").EnumerateArray().First() .GetProperty("intervals").EnumerateArray().First() .GetProperty("values"); double tempC = weather.GetProperty("temperature").GetDouble(); return(new WeatherDataContainer { SourceName = "TomorrowIO", TempC = tempC, TempF = GeneralConversions.ConvertTempFromCToF(tempC), Humidity = (int)weather.GetProperty("humidity").GetDouble(), WindSpeed = weather.GetProperty("windSpeed").GetDouble(), WindDirection = GeneralConversions.GetDirectionFromAngle(weather.GetProperty("windDirection").GetDouble()), Precipitation = PrecipitationId[weather.GetProperty("precipitationType").GetInt32()], PrecipitationProbability = weather.GetProperty("precipitationProbability").GetDouble(), CloudCover = (int)weather.GetProperty("cloudCover").GetDouble() }); } } catch { return(null); } }
public override WeatherDataContainer?ParseJSONObject(string json) { try { using (JsonDocument doc = JsonDocument.Parse(json)) { var weather = doc.RootElement .GetProperty("hours").EnumerateArray().First(); double temp = weather.GetProperty("airTemperature").GetProperty(StormSource).GetDouble(); double precipitation = weather.GetProperty("precipitation").GetProperty(StormSource).GetDouble(); double windAngle = weather.GetProperty("windDirection").GetProperty(StormSource).GetDouble(); PrecipitationTypes type; if (precipitation < 0.005) { type = PrecipitationTypes.None; } else if (temp > 0) { type = PrecipitationTypes.Rain; } else { type = PrecipitationTypes.Snow; } return(new WeatherDataContainer { SourceName = "StormglassIO", TempC = temp, TempF = GeneralConversions.ConvertTempFromCToF(temp), Humidity = (int)weather.GetProperty("humidity").GetProperty(StormSource).GetDouble(), WindSpeed = weather.GetProperty("windSpeed").GetProperty(StormSource).GetDouble(), WindDirection = GeneralConversions.GetDirectionFromAngle(windAngle), PrecipitationVolumetric = precipitation, Precipitation = type, CloudCover = (int)weather.GetProperty("cloudCover").GetProperty(StormSource).GetDouble() }); } } catch { return(null); } }
public void TemperatureConversionTest() { Assert.AreEqual(77, (int)GeneralConversions.ConvertTempFromCToF(25)); }
public void WindDirectionTest() { Assert.AreEqual(WindDirections.N, GeneralConversions.GetDirectionFromAngle(20)); Assert.AreEqual(WindDirections.SE, GeneralConversions.GetDirectionFromAngle(130)); }