using Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Config; using Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Models; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System.Net.Http; using System.Threading.Tasks; using System.Text.Json; namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services { public class OrderApiClient : IOrderApiClient { private readonly HttpClient _apiClient; private readonly ILogger _logger; private readonly UrlsConfig _urls; public OrderApiClient(HttpClient httpClient, ILogger logger, IOptions config) { _apiClient = httpClient; _logger = logger; _urls = config.Value; } public async Task GetOrderDraftFromBasketAsync(BasketData basket) { var url = _urls.Orders + UrlsConfig.OrdersOperations.GetOrderDraft(); var content = new StringContent(JsonSerializer.Serialize(basket), System.Text.Encoding.UTF8, "application/json"); var response = await _apiClient.PostAsync(url, content); response.EnsureSuccessStatusCode(); var ordersDraftResponse = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize(ordersDraftResponse, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); } } }