diff --git a/PlantBox.Shared/Communication/Commands/InfoRequest.cs b/PlantBox.Shared/Communication/Commands/InfoRequest.cs new file mode 100644 index 0000000..418ab8e --- /dev/null +++ b/PlantBox.Shared/Communication/Commands/InfoRequest.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace PlantBox.Shared.Communication.Commands +{ + public class InfoRequest : CommandSerializable + { + public override Command Command => Command.Info; + + public override InfoRequest Deserialize(string[] arguments) + { + return this; + } + + public override string[] Serialize() + { + return Array.Empty(); + } + } +} diff --git a/PlantBox.Shared/Communication/Commands/InfoResponse.cs b/PlantBox.Shared/Communication/Commands/InfoResponse.cs new file mode 100644 index 0000000..2a5541a --- /dev/null +++ b/PlantBox.Shared/Communication/Commands/InfoResponse.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; + +namespace PlantBox.Shared.Communication.Commands +{ + public class InfoResponse : CommandSerializable + { + public override Command Command => Command.Info; + + public string Name { get; set; } + public PlantType Type { get; set; } + public PlantState State { get; set; } + public double Water { get; set; } + + public override InfoResponse Deserialize(string[] arguments) + { + if (arguments == null) + { + throw new ArgumentNullException(nameof(arguments)); + } + if (arguments.Length < 4) + { + throw new ArgumentException($"Excepted 4 arguments, got {arguments.Length}"); + } + + Name = arguments[0]; + Type = (PlantType)Enum.Parse(typeof(PlantType), arguments[1], true); + State = (PlantState)Enum.Parse(typeof(PlantState), arguments[2], true); + Water = double.Parse(arguments[3], CultureInfo.InvariantCulture); + + return this; + } + + public override string[] Serialize() + { + return new[] + { + Name, + Type.ToString(), + State.ToString(), + Water.ToString(CultureInfo.InvariantCulture) + }; + } + } +} diff --git a/PlantBox.Shared/Communication/Commands/PlantState.cs b/PlantBox.Shared/Communication/Commands/PlantState.cs new file mode 100644 index 0000000..d7ba36a --- /dev/null +++ b/PlantBox.Shared/Communication/Commands/PlantState.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace PlantBox.Shared.Communication.Commands +{ + public enum PlantState + { + Bad, + Warning, + Good + } +} diff --git a/PlantBox.Shared/Communication/Commands/PlantType.cs b/PlantBox.Shared/Communication/Commands/PlantType.cs new file mode 100644 index 0000000..36dae3d --- /dev/null +++ b/PlantBox.Shared/Communication/Commands/PlantType.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace PlantBox.Shared.Communication.Commands +{ + public enum PlantType + { + Bamboo, + Bonsai, + Cactus, + Ficus, + } +}