using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; using Microsoft.eShopOnContainers.BuildingBlocks.Resilience.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Newtonsoft.Json; using Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator.Config; using Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator.Models; namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator.Services { public class BasketService : IBasketService { private readonly IHttpClient _apiClient; private readonly ILogger _logger; private readonly UrlsConfig _urls; private readonly IHttpContextAccessor _httpContextAccessor; public BasketService(IHttpClient httpClient, IHttpContextAccessor httpContextAccessor, ILogger logger, IOptionsSnapshot config) { _apiClient = httpClient; _logger = logger; _urls = config.Value; _httpContextAccessor = httpContextAccessor; } public async Task GetById(string id) { var token = await GetUserTokenAsync(); var data = await _apiClient.GetStringAsync(_urls.Basket + UrlsConfig.BasketOperations.GetItemById(id), token); var basket = !string.IsNullOrEmpty(data) ? JsonConvert.DeserializeObject(data) : null; return basket; } public async Task Update(BasketData currentBasket) { var token = await GetUserTokenAsync(); var data = await _apiClient.PostAsync(_urls.Basket + UrlsConfig.BasketOperations.UpdateBasket(), currentBasket, token); int i = 0; } async Task GetUserTokenAsync() { var context = _httpContextAccessor.HttpContext; return await context.GetTokenAsync("access_token"); } } }