refactoring the grpc client
This commit is contained in:
parent
260bfcbc45
commit
311e1a2bfd
@ -39,8 +39,6 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve the current basket
|
// Retrieve the current basket
|
||||||
Log.Information("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GetByIdAsync @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
|
|
||||||
|
|
||||||
var basket = await _basket.GetById(data.BuyerId) ?? new BasketData(data.BuyerId);
|
var basket = await _basket.GetById(data.BuyerId) ?? new BasketData(data.BuyerId);
|
||||||
|
|
||||||
Log.Debug("get basket by id response={@response}", basket);
|
Log.Debug("get basket by id response={@response}", basket);
|
||||||
|
@ -28,74 +28,63 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services
|
|||||||
|
|
||||||
public async Task<BasketData> GetById(string id)
|
public async Task<BasketData> GetById(string id)
|
||||||
{
|
{
|
||||||
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
|
return await GrpcCallerService.CallService(_urls.GrpcBasket, async httpClient =>
|
||||||
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
|
|
||||||
|
|
||||||
using (var httpClientHandler = new HttpClientHandler())
|
|
||||||
{
|
{
|
||||||
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
|
_logger.LogWarning("######################## grpc client created, request = {@id}", id);
|
||||||
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);
|
|
||||||
|
|
||||||
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
|
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
|
||||||
|
|
||||||
_logger.LogDebug("grpc client created, request = {@id}", id);
|
_logger.LogDebug("grpc client created, request = {@id}", id);
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
var response = await client.GetBasketByIdAsync(new BasketRequest { 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);
|
return MapToBasketData(response);
|
||||||
}
|
});
|
||||||
catch (RpcException e)
|
|
||||||
{
|
|
||||||
_logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UpdateAsync(BasketData currentBasket)
|
public async Task UpdateAsync(BasketData currentBasket)
|
||||||
{
|
{
|
||||||
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
|
await GrpcCallerService.CallService(_urls.GrpcBasket, async httpClient =>
|
||||||
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);
|
|
||||||
|
|
||||||
_logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress);
|
|
||||||
|
|
||||||
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
|
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
|
||||||
|
_logger.LogDebug("Grpc update basket currentBasket {@currentBasket}", currentBasket);
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
_logger.LogInformation("Grpc update basket currentBasket {@currentBasket}", currentBasket);
|
|
||||||
var request = MapToCustomerBasketRequest(currentBasket);
|
var request = MapToCustomerBasketRequest(currentBasket);
|
||||||
_logger.LogInformation("Grpc update basket request {@request}", request);
|
_logger.LogDebug("Grpc update basket request {@request}", request);
|
||||||
|
|
||||||
await client.UpdateBasketAsync(request);
|
return client.UpdateBasketAsync(request);
|
||||||
}
|
});
|
||||||
catch (RpcException e)
|
|
||||||
{
|
//AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
|
||||||
_logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}");
|
//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);
|
||||||
|
|
||||||
|
// _logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress);
|
||||||
|
|
||||||
|
// var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
|
||||||
|
|
||||||
|
|
||||||
|
// 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)
|
private BasketData MapToBasketData(CustomerBasketResponse customerBasketRequest)
|
||||||
|
@ -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<TResponse> CallService<TResponse>(string urlGrpc, Func<HttpClient, Task<TResponse>> 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<HttpClient, Task> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -144,9 +144,9 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator
|
|||||||
|
|
||||||
options.SwaggerDoc("v1", new OpenApiInfo
|
options.SwaggerDoc("v1", new OpenApiInfo
|
||||||
{
|
{
|
||||||
Title = "Shopping Aggregator for Mobile Clients",
|
Title = "Shopping Aggregator for Web Clients",
|
||||||
Version = "v1",
|
Version = "v1",
|
||||||
Description = "Shopping Aggregator for Mobile Clients"
|
Description = "Shopping Aggregator for Web Clients"
|
||||||
});
|
});
|
||||||
|
|
||||||
options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
|
options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
|
||||||
|
Loading…
x
Reference in New Issue
Block a user