Add HistoricResponse
This commit is contained in:
72
PlantBox.Shared/Communication/Commands/HistoricResponse.cs
Normal file
72
PlantBox.Shared/Communication/Commands/HistoricResponse.cs
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace PlantBox.Shared.Communication.Commands
|
||||||
|
{
|
||||||
|
public class HistoricResponse : CommandSerializable<HistoricResponse>
|
||||||
|
{
|
||||||
|
public const char ValueSeparator = '/';
|
||||||
|
|
||||||
|
public override Command Command => Command.Historic;
|
||||||
|
|
||||||
|
public TimeSpan Time { get; set; }
|
||||||
|
public double[] Humidities { get; set; }
|
||||||
|
public double[] Luminosities { get; set; }
|
||||||
|
public double[] Temperatures { get; set; }
|
||||||
|
|
||||||
|
public HistoricResponse()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public HistoricResponse(TimeSpan time, double[] humidities, double[] luminosities, double[] temperatures)
|
||||||
|
{
|
||||||
|
Time = time;
|
||||||
|
Humidities = humidities;
|
||||||
|
Luminosities = luminosities;
|
||||||
|
Temperatures = temperatures;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override HistoricResponse Deserialize(string[] arguments)
|
||||||
|
{
|
||||||
|
double[] GetArray(string argument)
|
||||||
|
{
|
||||||
|
return argument.Split(ValueSeparator).Select(x => double.Parse(x, CultureInfo.InvariantCulture)).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (arguments == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(arguments));
|
||||||
|
}
|
||||||
|
if (arguments.Length < 4)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"Excepted 4 arguments, got {arguments.Length}");
|
||||||
|
}
|
||||||
|
|
||||||
|
Time = TimeSpan.FromMinutes(double.Parse(arguments[0]));
|
||||||
|
Humidities = GetArray(arguments[1]);
|
||||||
|
Luminosities = GetArray(arguments[2]);
|
||||||
|
Temperatures = GetArray(arguments[3]);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string[] Serialize()
|
||||||
|
{
|
||||||
|
string Join(double[] values)
|
||||||
|
{
|
||||||
|
return string.Join(ValueSeparator.ToString(), values);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new[]
|
||||||
|
{
|
||||||
|
Time.TotalMinutes.ToString(CultureInfo.InvariantCulture),
|
||||||
|
Join(Humidities),
|
||||||
|
Join(Luminosities),
|
||||||
|
Join(Temperatures)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user