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);
            }
        }
示例#3
0
 public void TemperatureConversionTest()
 {
     Assert.AreEqual(77, (int)GeneralConversions.ConvertTempFromCToF(25));
 }
示例#4
0
 public void WindDirectionTest()
 {
     Assert.AreEqual(WindDirections.N, GeneralConversions.GetDirectionFromAngle(20));
     Assert.AreEqual(WindDirections.SE, GeneralConversions.GetDirectionFromAngle(130));
 }