From 03cff3533ce0d44b45e6a48fbcbe19c5e31cedea Mon Sep 17 00:00:00 2001 From: Chris Kaczor Date: Wed, 7 Aug 2019 18:25:56 -0400 Subject: [PATCH] Refactor models --- Weather/Models/MessageType.cs | 11 ++++ ...eatherMessageData.cs => WeatherMessage.cs} | 63 +------------------ Weather/Models/WeatherReading.cs | 42 +++++++++++++ Weather/Models/WindDirection.cs | 26 ++++++++ 4 files changed, 81 insertions(+), 61 deletions(-) create mode 100644 Weather/Models/MessageType.cs rename Weather/Models/{WeatherMessageData.cs => WeatherMessage.cs} (59%) create mode 100644 Weather/Models/WeatherReading.cs create mode 100644 Weather/Models/WindDirection.cs diff --git a/Weather/Models/MessageType.cs b/Weather/Models/MessageType.cs new file mode 100644 index 0000000..c5d0072 --- /dev/null +++ b/Weather/Models/MessageType.cs @@ -0,0 +1,11 @@ +using JetBrains.Annotations; + +namespace ChrisKaczor.HomeMonitor.Weather.Models +{ + [PublicAPI] + public enum MessageType + { + Text, + Data + } +} diff --git a/Weather/Models/WeatherMessageData.cs b/Weather/Models/WeatherMessage.cs similarity index 59% rename from Weather/Models/WeatherMessageData.cs rename to Weather/Models/WeatherMessage.cs index d8e1482..b1e8496 100644 --- a/Weather/Models/WeatherMessageData.cs +++ b/Weather/Models/WeatherMessage.cs @@ -7,71 +7,12 @@ using System.Linq; namespace ChrisKaczor.HomeMonitor.Weather.Models { - public enum MessageType - { - Text, - Data - } - [PublicAPI] - public enum WindDirection - { - None = -1, - North = 0, - East = 90, - South = 180, - West = 270, - NorthEast = 45, - SouthEast = 135, - SouthWest = 225, - NorthWest = 315, - NorthNorthEast = 23, - EastNorthEast = 68, - EastSouthEast = 113, - SouthSouthEast = 158, - SouthSouthWest = 203, - WestSouthWest = 248, - WestNorthWest = 293, - NorthNorthWest = 338 - } - - [PublicAPI] - public class WeatherMessage + public class WeatherMessage : WeatherReading { [JsonConverter(typeof(StringEnumConverter))] public MessageType Type { get; set; } - public DateTimeOffset Timestamp { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public WindDirection WindDirection { get; set; } - - public decimal WindSpeed { get; set; } - - public decimal Humidity { get; set; } - - public decimal HumidityTemperature { get; set; } - - public decimal Rain { get; set; } - - public decimal Pressure { get; set; } - - public decimal PressureTemperature { get; set; } - - public decimal BatteryLevel { get; set; } - - public decimal LightLevel { get; set; } - - public decimal Latitude { get; set; } - - public decimal Longitude { get; set; } - - public decimal Altitude { get; set; } - - public int SatelliteCount { get; set; } - - public DateTimeOffset GpsTimestamp { get; set; } - public string Message { get; set; } public WeatherMessage() @@ -92,7 +33,7 @@ namespace ChrisKaczor.HomeMonitor.Weather.Models var messageValues = messageParts.Select(m => m.Split('=')).ToDictionary(a => a[0], a => a[1]); - WindDirection = (WindDirection) Enum.Parse(typeof(WindDirection), messageValues[@"winddir"]); + WindDirection = (WindDirection)Enum.Parse(typeof(WindDirection), messageValues[@"winddir"]); WindSpeed = decimal.Parse(messageValues[@"windspeedmph"]); Humidity = decimal.Parse(messageValues[@"humidity"]); HumidityTemperature = decimal.Parse(messageValues[@"tempH"]); diff --git a/Weather/Models/WeatherReading.cs b/Weather/Models/WeatherReading.cs new file mode 100644 index 0000000..01d0f99 --- /dev/null +++ b/Weather/Models/WeatherReading.cs @@ -0,0 +1,42 @@ +using JetBrains.Annotations; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using System; + +namespace ChrisKaczor.HomeMonitor.Weather.Models +{ + [PublicAPI] + public class WeatherReading + { + public DateTimeOffset Timestamp { get; set; } + + [JsonConverter(typeof(StringEnumConverter))] + public WindDirection WindDirection { get; set; } + + public decimal WindSpeed { get; set; } + + public decimal Humidity { get; set; } + + public decimal HumidityTemperature { get; set; } + + public decimal Rain { get; set; } + + public decimal Pressure { get; set; } + + public decimal PressureTemperature { get; set; } + + public decimal BatteryLevel { get; set; } + + public decimal LightLevel { get; set; } + + public decimal Latitude { get; set; } + + public decimal Longitude { get; set; } + + public decimal Altitude { get; set; } + + public int SatelliteCount { get; set; } + + public DateTimeOffset GpsTimestamp { get; set; } + } +} diff --git a/Weather/Models/WindDirection.cs b/Weather/Models/WindDirection.cs new file mode 100644 index 0000000..ff17494 --- /dev/null +++ b/Weather/Models/WindDirection.cs @@ -0,0 +1,26 @@ +using JetBrains.Annotations; + +namespace ChrisKaczor.HomeMonitor.Weather.Models +{ + [PublicAPI] + public enum WindDirection + { + None = -1, + North = 0, + East = 90, + South = 180, + West = 270, + NorthEast = 45, + SouthEast = 135, + SouthWest = 225, + NorthWest = 315, + NorthNorthEast = 23, + EastNorthEast = 68, + EastSouthEast = 113, + SouthSouthEast = 158, + SouthSouthWest = 203, + WestSouthWest = 248, + WestNorthWest = 293, + NorthNorthWest = 338 + } +}