using System.Net; using System.Net.Http.Json; using DbFirst.BlazorWebApp.Models; namespace DbFirst.BlazorWebApp.Services; public class CatalogApiClient : ICatalogApiClient { private readonly HttpClient _httpClient; private const string Endpoint = "api/catalogs"; public CatalogApiClient(HttpClient httpClient) { _httpClient = httpClient; } public async Task> GetAllAsync() { var result = await _httpClient.GetFromJsonAsync>(Endpoint); return result ?? new List(); } public async Task GetByIdAsync(int id) { return await _httpClient.GetFromJsonAsync($"{Endpoint}/{id}"); } public async Task> CreateAsync(CatalogWriteDto dto) { var response = await _httpClient.PostAsJsonAsync(Endpoint, dto); if (response.IsSuccessStatusCode) { var payload = await response.Content.ReadFromJsonAsync(); return ApiResult.Ok(payload); } var error = await ApiClientHelper.ReadErrorAsync(response); return ApiResult.Fail(error); } public async Task> UpdateAsync(int id, CatalogWriteDto dto) { var response = await _httpClient.PutAsJsonAsync($"{Endpoint}/{id}", dto); if (response.IsSuccessStatusCode) { return ApiResult.Ok(true); } var error = await ApiClientHelper.ReadErrorAsync(response); return ApiResult.Fail(error); } public async Task> DeleteAsync(int id) { var response = await _httpClient.DeleteAsync($"{Endpoint}/{id}"); if (response.IsSuccessStatusCode) { return ApiResult.Ok(true); } var error = await ApiClientHelper.ReadErrorAsync(response); return ApiResult.Fail(error); } }