using ShopOnline.Models.Dtos; using ShopOnline.Web.Services.Contracts; using System.Net.Http.Json; namespace ShopOnline.Web.Services { public class ShoppingCartService : IShoppingCartService { private readonly HttpClient httpClient; public ShoppingCartService(HttpClient httpClient) { this.httpClient = httpClient; } public async Task AddItem(CartItemToAddDto cartItemToAddDto) { try { var response = await httpClient.PostAsJsonAsync("api/ShoppingCart", cartItemToAddDto); if (response.IsSuccessStatusCode) { if(response.StatusCode == System.Net.HttpStatusCode.NoContent) { return default(CartItemDto); } return await response.Content.ReadFromJsonAsync(); } else { var message = await response.Content.ReadAsStringAsync(); throw new Exception($"Http status: {response.StatusCode}\n\tMessage: {message}"); } } catch { throw; } } public async Task> GetItems(int userId) { try { var response = await httpClient.GetAsync($"api/ShoppingCart/{userId}/GetItems"); if(response.IsSuccessStatusCode) { if(response.StatusCode == System.Net.HttpStatusCode.NoContent) { return Enumerable.Empty(); } return await response.Content.ReadFromJsonAsync>(); } else { var message = await response.Content.ReadAsStringAsync(); throw new Exception($"Http status: {response.StatusCode}\n\tMessage: {message}"); } } catch(Exception) { throw; } } } }