Refactored CatalogApiClient, DashboardApiClient, LayoutApiClient, and MassDataApiClient to use C# primary constructor syntax for injecting HttpClient. Removed private _httpClient fields and updated all usages to reference the constructor parameter directly. This change simplifies the code and modernizes dependency injection without altering any API logic.
47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
using DbFirst.Contracts.Layouts;
|
|
|
|
namespace DbFirst.BlazorWebApp.Services;
|
|
|
|
public class LayoutApiClient(HttpClient httpClient) : ILayoutApiClient
|
|
{
|
|
private const string Endpoint = "api/layouts";
|
|
|
|
public async Task<LayoutDto?> GetAsync(string layoutType, string layoutKey, string userName, CancellationToken ct = default)
|
|
{
|
|
var url = $"{Endpoint}?layoutType={Uri.EscapeDataString(layoutType)}&layoutKey={Uri.EscapeDataString(layoutKey)}&userName={Uri.EscapeDataString(userName)}";
|
|
var response = await httpClient.GetAsync(url, ct);
|
|
if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
response.EnsureSuccessStatusCode();
|
|
return await response.Content.ReadFromJsonAsync<LayoutDto>();
|
|
}
|
|
|
|
public async Task<LayoutDto> UpsertAsync(LayoutDto dto, CancellationToken ct = default)
|
|
{
|
|
var response = await httpClient.PostAsJsonAsync(Endpoint, dto, ct);
|
|
if (!response.IsSuccessStatusCode)
|
|
{
|
|
var detail = await ApiClientHelper.ReadErrorAsync(response);
|
|
throw new InvalidOperationException(detail);
|
|
}
|
|
|
|
var payload = await response.Content.ReadFromJsonAsync<LayoutDto>();
|
|
return payload ?? dto;
|
|
}
|
|
|
|
public async Task DeleteAsync(string layoutType, string layoutKey, string userName, CancellationToken ct = default)
|
|
{
|
|
var url = $"{Endpoint}?layoutType={Uri.EscapeDataString(layoutType)}&layoutKey={Uri.EscapeDataString(layoutKey)}&userName={Uri.EscapeDataString(userName)}";
|
|
var response = await httpClient.DeleteAsync(url, ct);
|
|
if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
|
|
{
|
|
return;
|
|
}
|
|
|
|
response.EnsureSuccessStatusCode();
|
|
}
|
|
}
|