Skip to content

Commit 311e1a2

Browse files
author
ericuss
committed
refactoring the grpc client
1 parent 260bfcb commit 311e1a2

4 files changed

Lines changed: 114 additions & 56 deletions

File tree

src/ApiGateways/Web.Bff.Shopping/aggregator/Controllers/BasketController.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ public async Task<ActionResult<BasketData>> UpdateAllBasketAsync([FromBody] Upda
3939
}
4040

4141
// Retrieve the current basket
42-
Log.Information("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GetByIdAsync @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
43-
4442
var basket = await _basket.GetById(data.BuyerId) ?? new BasketData(data.BuyerId);
4543

4644
Log.Debug("get basket by id response={@response}", basket);

src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs

Lines changed: 41 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -28,74 +28,63 @@ public BasketService(HttpClient httpClient, IOptions<UrlsConfig> config, ILogger
2828

2929
public async Task<BasketData> GetById(string id)
3030
{
31-
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
32-
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
33-
34-
using (var httpClientHandler = new HttpClientHandler())
31+
return await GrpcCallerService.CallService(_urls.GrpcBasket, async httpClient =>
3532
{
36-
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
37-
using (var httpClient = new HttpClient(httpClientHandler))
38-
{
39-
//httpClient.BaseAddress = new Uri("http://10.0.75.1:5580");
40-
httpClient.BaseAddress = new Uri(_urls.GrpcBasket);
41-
42-
_logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress);
33+
_logger.LogWarning("######################## grpc client created, request = {@id}", id);
4334

44-
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
45-
46-
_logger.LogDebug("grpc client created, request = {@id}", id);
47-
48-
try
49-
{
35+
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
5036

51-
var response = await client.GetBasketByIdAsync(new BasketRequest { Id = id });
37+
_logger.LogDebug("grpc client created, request = {@id}", id);
38+
var response = await client.GetBasketByIdAsync(new BasketRequest { Id = id });
5239

53-
_logger.LogDebug("grpc response {@response}", response);
40+
_logger.LogDebug("grpc response {@response}", response);
5441

55-
return MapToBasketData(response);
56-
}
57-
catch (RpcException e)
58-
{
59-
_logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}");
60-
}
61-
}
62-
}
63-
64-
return null;
42+
return MapToBasketData(response);
43+
});
6544
}
6645

6746
public async Task UpdateAsync(BasketData currentBasket)
6847
{
69-
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
70-
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
71-
72-
using (var httpClientHandler = new HttpClientHandler())
48+
await GrpcCallerService.CallService(_urls.GrpcBasket, async httpClient =>
7349
{
74-
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
75-
using (var httpClient = new HttpClient(httpClientHandler))
76-
{
77-
httpClient.BaseAddress = new Uri(_urls.GrpcBasket);
50+
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
51+
_logger.LogDebug("Grpc update basket currentBasket {@currentBasket}", currentBasket);
52+
var request = MapToCustomerBasketRequest(currentBasket);
53+
_logger.LogDebug("Grpc update basket request {@request}", request);
7854

79-
_logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress);
55+
return client.UpdateBasketAsync(request);
56+
});
8057

81-
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
58+
//AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
59+
//AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
8260

61+
//using (var httpClientHandler = new HttpClientHandler())
62+
//{
63+
// httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
64+
// using (var httpClient = new HttpClient(httpClientHandler))
65+
// {
66+
// httpClient.BaseAddress = new Uri(_urls.GrpcBasket);
8367

84-
try
85-
{
68+
// _logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress);
8669

87-
_logger.LogInformation("Grpc update basket currentBasket {@currentBasket}", currentBasket);
88-
var request = MapToCustomerBasketRequest(currentBasket);
89-
_logger.LogInformation("Grpc update basket request {@request}", request);
70+
// var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
9071

91-
await client.UpdateBasketAsync(request);
92-
}
93-
catch (RpcException e)
94-
{
95-
_logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}");
96-
}
97-
}
98-
}
72+
73+
// try
74+
// {
75+
76+
// _logger.LogDebug("Grpc update basket currentBasket {@currentBasket}", currentBasket);
77+
// var request = MapToCustomerBasketRequest(currentBasket);
78+
// _logger.LogDebug("Grpc update basket request {@request}", request);
79+
80+
// await client.UpdateBasketAsync(request);
81+
// }
82+
// catch (RpcException e)
83+
// {
84+
// _logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}");
85+
// }
86+
// }
87+
//}
9988
}
10089

10190
private BasketData MapToBasketData(CustomerBasketResponse customerBasketRequest)
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using System.Net.Http;
2+
using System.Threading.Tasks;
3+
using System;
4+
using Grpc.Core;
5+
using Serilog;
6+
7+
namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services
8+
{
9+
public static class GrpcCallerService
10+
{
11+
public static Task<TResponse> CallService<TResponse>(string urlGrpc, Func<HttpClient, Task<TResponse>> func)
12+
{
13+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
14+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
15+
16+
using (var httpClientHandler = new HttpClientHandler())
17+
{
18+
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
19+
using (var httpClient = new HttpClient(httpClientHandler))
20+
{
21+
httpClient.BaseAddress = new Uri(urlGrpc);
22+
Log.Debug("Creating grpc client base address {@httpClient.BaseAddress} ", httpClient.BaseAddress);
23+
24+
try
25+
{
26+
return func(httpClient);
27+
}
28+
catch (RpcException e)
29+
{
30+
Log.Error($"Error calling via grpc: {e.Status} - {e.Message}");
31+
}
32+
}
33+
}
34+
35+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", false);
36+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", false);
37+
38+
return default;
39+
}
40+
41+
public static Task CallService(string urlGrpc, Func<HttpClient, Task> func)
42+
{
43+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
44+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
45+
46+
using (var httpClientHandler = new HttpClientHandler())
47+
{
48+
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
49+
using (var httpClient = new HttpClient(httpClientHandler))
50+
{
51+
httpClient.BaseAddress = new Uri(urlGrpc);
52+
Log.Debug("Creating grpc client base address {@httpClient.BaseAddress} ", httpClient.BaseAddress);
53+
54+
try
55+
{
56+
return func(httpClient);
57+
}
58+
catch (RpcException e)
59+
{
60+
Log.Error($"Error calling via grpc: {e.Status} - {e.Message}");
61+
}
62+
}
63+
}
64+
65+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", false);
66+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", false);
67+
68+
return default;
69+
}
70+
}
71+
}

src/ApiGateways/Web.Bff.Shopping/aggregator/Startup.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,9 @@ public static IServiceCollection AddCustomMvc(this IServiceCollection services,
144144

145145
options.SwaggerDoc("v1", new OpenApiInfo
146146
{
147-
Title = "Shopping Aggregator for Mobile Clients",
147+
Title = "Shopping Aggregator for Web Clients",
148148
Version = "v1",
149-
Description = "Shopping Aggregator for Mobile Clients"
149+
Description = "Shopping Aggregator for Web Clients"
150150
});
151151

152152
options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme

0 commit comments

Comments
 (0)