Initial commit
This commit is contained in:
71
SerialCom/DataApi.cs
Normal file
71
SerialCom/DataApi.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using System.Net.Http.Json;
|
||||
using MoniteurBaie.DataModels;
|
||||
|
||||
namespace MoniteurBaie.SerialCom;
|
||||
|
||||
sealed class DataApi : IDisposable
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly HttpClient _httpClient;
|
||||
|
||||
public DataApi(ILogger logger, IConfiguration config)
|
||||
{
|
||||
_logger = logger;
|
||||
_httpClient = new HttpClient
|
||||
{
|
||||
BaseAddress = new Uri(config.GetValue<string>("BaseUrl")!),
|
||||
Timeout = TimeSpan.FromSeconds(1)
|
||||
};
|
||||
}
|
||||
|
||||
public void Send(BatteryControllerPacket packet) => Task.Run(() => DoSend(packet));
|
||||
|
||||
private async Task DoSend(BatteryControllerPacket packet)
|
||||
{
|
||||
SerialDataPacket serialPacket;
|
||||
|
||||
try
|
||||
{
|
||||
serialPacket = PacketParser.ParseSerialDataPacket(packet.SerialData);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Failed to parse packet.");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await _httpClient.PostAsJsonAsync("/packets", serialPacket.ToDataPacket(packet.Timestamp), DataPacketContext.Default.DataPacket);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Failed to send packet.");
|
||||
}
|
||||
}
|
||||
|
||||
#region IDisposable
|
||||
|
||||
private bool _disposedValue;
|
||||
|
||||
private void Dispose(bool disposing)
|
||||
{
|
||||
if (!_disposedValue)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
_httpClient.Dispose();
|
||||
}
|
||||
|
||||
_disposedValue = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(disposing: true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
Reference in New Issue
Block a user