feat(EConnectClient): created as an implementation of IEConnectClient

This commit is contained in:
Developer 02 2025-08-12 20:08:36 +02:00
parent 757ba77179
commit 9d5bf509d5
3 changed files with 52 additions and 2 deletions

View File

@ -4,8 +4,8 @@ namespace Leanetec.EConnect.Client.Interface;
public interface IEConnectClient<TError> where TError : class
{
public Task<Response<TData, TError>> GetAsync<TData>(string? route, CancellationToken cancel = default) where TData : class;
public Task<Response<TData, TError>> GetAsync<TData>(string? route = null, CancellationToken cancel = default) where TData : class;
public Task<Response<IAsyncEnumerable<TData?>, TError>> GetListAsAsyncEnumerable<TData>(string? route, CancellationToken cancel = default)
public Task<Response<IAsyncEnumerable<TData?>, TError>> GetListAsAsyncEnumerable<TData>(string? route = null, CancellationToken cancel = default)
where TData : class;
}

View File

@ -0,0 +1,49 @@
using Leanetec.EConnect.Client.Interface;
using Leanetec.EConnect.Domain.Entities;
using System.Net.Http.Json;
namespace Leanetec.EConnect.Infrastructure;
public class EConnectClient<TError> : IEConnectClient<TError> where TError : class
{
private readonly HttpClient _http;
public EConnectClient(IHttpClientFactory factory)
{
_http = factory.CreateEConnectClient();
}
public async Task<Response<TData, TError>> GetAsync<TData>(string? route = null, CancellationToken cancel = default)
where TData : class
{
var res = await _http.GetAsync(route, cancel);
if (res.IsSuccessStatusCode)
{
var data = await res.Content.ReadFromJsonAsync<TData>(cancel);
return new Response<TData, TError>(true, Data: data);
}
else
{
var error = await res.Content.ReadFromJsonAsync<TError>(cancel);
return new Response<TData, TError>(false, Error: error);
}
}
public async Task<Response<IAsyncEnumerable<TData?>, TError>> GetListAsAsyncEnumerable<TData>(string? route = null, CancellationToken cancel = default)
where TData : class
{
var res = await _http.GetAsync(route, cancel);
if (res.IsSuccessStatusCode)
{
var data = res.Content.ReadFromJsonAsAsyncEnumerable<TData>(cancel);
return new Response<IAsyncEnumerable<TData?>, TError>(true, Data: data);
}
else
{
var error = await res.Content.ReadFromJsonAsync<TError>(cancellationToken: cancel);
return new Response<IAsyncEnumerable<TData?>, TError>(false, Error: error);
}
}
}

View File

@ -12,6 +12,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Leanetec.EConnect.Client\Leanetec.EConnect.Client.csproj" />
<ProjectReference Include="..\Leanetec.EConnect.Domain\Leanetec.EConnect.Domain.csproj" />
</ItemGroup>