Add HistoricResponse

This commit is contained in:
2019-03-23 22:34:45 +01:00
parent a1944a1203
commit f03de89815

View 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)
};
}
}
}