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