diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Controllers/BasketController.cs b/src/ApiGateways/Web.Bff.Shopping/aggregator/Controllers/BasketController.cs index a3be37611..5905ae214 100644 --- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Controllers/BasketController.cs +++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Controllers/BasketController.cs @@ -39,8 +39,6 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Controllers } // Retrieve the current basket - Log.Information("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GetByIdAsync @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); - var basket = await _basket.GetById(data.BuyerId) ?? new BasketData(data.BuyerId); Log.Debug("get basket by id response={@response}", basket); diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs b/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs index 4389c4383..5274ddc49 100644 --- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs +++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs @@ -28,74 +28,63 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services public async Task GetById(string id) { - AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); - AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true); - - using (var httpClientHandler = new HttpClientHandler()) + return await GrpcCallerService.CallService(_urls.GrpcBasket, async httpClient => { - httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; - using (var httpClient = new HttpClient(httpClientHandler)) - { - //httpClient.BaseAddress = new Uri("http://10.0.75.1:5580"); - httpClient.BaseAddress = new Uri(_urls.GrpcBasket); - - _logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress); + _logger.LogWarning("######################## grpc client created, request = {@id}", id); - var client = GrpcClient.Create(httpClient); - - _logger.LogDebug("grpc client created, request = {@id}", id); - - try - { + var client = GrpcClient.Create(httpClient); - var response = await client.GetBasketByIdAsync(new BasketRequest { Id = id }); + _logger.LogDebug("grpc client created, request = {@id}", id); + var response = await client.GetBasketByIdAsync(new BasketRequest { Id = id }); - _logger.LogDebug("grpc response {@response}", response); + _logger.LogDebug("grpc response {@response}", response); - return MapToBasketData(response); - } - catch (RpcException e) - { - _logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}"); - } - } - } - - return null; + return MapToBasketData(response); + }); } public async Task UpdateAsync(BasketData currentBasket) { - AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); - AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true); - - using (var httpClientHandler = new HttpClientHandler()) + await GrpcCallerService.CallService(_urls.GrpcBasket, async httpClient => { - httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; - using (var httpClient = new HttpClient(httpClientHandler)) - { - httpClient.BaseAddress = new Uri(_urls.GrpcBasket); + var client = GrpcClient.Create(httpClient); + _logger.LogDebug("Grpc update basket currentBasket {@currentBasket}", currentBasket); + var request = MapToCustomerBasketRequest(currentBasket); + _logger.LogDebug("Grpc update basket request {@request}", request); - _logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress); + return client.UpdateBasketAsync(request); + }); - var client = GrpcClient.Create(httpClient); + //AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); + //AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true); + //using (var httpClientHandler = new HttpClientHandler()) + //{ + // httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; + // using (var httpClient = new HttpClient(httpClientHandler)) + // { + // httpClient.BaseAddress = new Uri(_urls.GrpcBasket); - try - { + // _logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress); - _logger.LogInformation("Grpc update basket currentBasket {@currentBasket}", currentBasket); - var request = MapToCustomerBasketRequest(currentBasket); - _logger.LogInformation("Grpc update basket request {@request}", request); + // var client = GrpcClient.Create(httpClient); - await client.UpdateBasketAsync(request); - } - catch (RpcException e) - { - _logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}"); - } - } - } + + // try + // { + + // _logger.LogDebug("Grpc update basket currentBasket {@currentBasket}", currentBasket); + // var request = MapToCustomerBasketRequest(currentBasket); + // _logger.LogDebug("Grpc update basket request {@request}", request); + + // await client.UpdateBasketAsync(request); + // } + // catch (RpcException e) + // { + // _logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}"); + // } + // } + //} } private BasketData MapToBasketData(CustomerBasketResponse customerBasketRequest) diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/GrpcCallerService.cs b/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/GrpcCallerService.cs new file mode 100644 index 000000000..7e0b61a2f --- /dev/null +++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/GrpcCallerService.cs @@ -0,0 +1,71 @@ +using System.Net.Http; +using System.Threading.Tasks; +using System; +using Grpc.Core; +using Serilog; + +namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services +{ + public static class GrpcCallerService + { + public static Task CallService(string urlGrpc, Func> func) + { + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true); + + using (var httpClientHandler = new HttpClientHandler()) + { + httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; + using (var httpClient = new HttpClient(httpClientHandler)) + { + httpClient.BaseAddress = new Uri(urlGrpc); + Log.Debug("Creating grpc client base address {@httpClient.BaseAddress} ", httpClient.BaseAddress); + + try + { + return func(httpClient); + } + catch (RpcException e) + { + Log.Error($"Error calling via grpc: {e.Status} - {e.Message}"); + } + } + } + + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", false); + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", false); + + return default; + } + + public static Task CallService(string urlGrpc, Func func) + { + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true); + + using (var httpClientHandler = new HttpClientHandler()) + { + httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; + using (var httpClient = new HttpClient(httpClientHandler)) + { + httpClient.BaseAddress = new Uri(urlGrpc); + Log.Debug("Creating grpc client base address {@httpClient.BaseAddress} ", httpClient.BaseAddress); + + try + { + return func(httpClient); + } + catch (RpcException e) + { + Log.Error($"Error calling via grpc: {e.Status} - {e.Message}"); + } + } + } + + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", false); + AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", false); + + return default; + } + } +} diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Startup.cs b/src/ApiGateways/Web.Bff.Shopping/aggregator/Startup.cs index 9613fe462..e16c4197e 100644 --- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Startup.cs +++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Startup.cs @@ -144,9 +144,9 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator options.SwaggerDoc("v1", new OpenApiInfo { - Title = "Shopping Aggregator for Mobile Clients", + Title = "Shopping Aggregator for Web Clients", Version = "v1", - Description = "Shopping Aggregator for Mobile Clients" + Description = "Shopping Aggregator for Web Clients" }); options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme