Skip to content

Commit 3fee58e

Browse files
author
ericuss
committed
partial checkin
1 parent 67af71d commit 3fee58e

4 files changed

Lines changed: 108 additions & 40 deletions

File tree

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

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,48 @@ public async Task<BasketData> GetById(string id)
6666

6767
public async Task UpdateAsync(BasketData currentBasket)
6868
{
69-
_httpClient.BaseAddress = new Uri(_urls.Basket + UrlsConfig.BasketOperations.UpdateBasket());
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())
73+
{
74+
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
75+
using (var httpClient = new HttpClient(httpClientHandler))
76+
{
77+
httpClient.BaseAddress = new Uri(_urls.GrpcBasket);
78+
79+
_logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress);
80+
81+
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
82+
83+
84+
try
85+
{
86+
87+
_logger.LogInformation("Grpc update basket currentBasket {@currentBasket}", currentBasket);
88+
var request = MapToCustomerBasketRequest(currentBasket);
89+
_logger.LogInformation("Grpc update basket request {@request}", request);
90+
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+
}
99+
100+
101+
102+
103+
//_httpClient.BaseAddress = new Uri(_urls.Basket + UrlsConfig.BasketOperations.UpdateBasket());
70104

71-
var client = GrpcClient.Create<Basket.BasketClient>(_httpClient);
72-
var request = MapToCustomerBasketRequest(currentBasket);
105+
//var client = GrpcClient.Create<Basket.BasketClient>(_httpClient);
106+
//_logger.LogInformation("Grpc update basket currentBasket {@currentBasket}", currentBasket);
107+
//var request = MapToCustomerBasketRequest(currentBasket);
108+
//_logger.LogInformation("Grpc update basket request {@request}", request);
73109

74-
await client.UpdateBasketAsync(request);
110+
//await client.UpdateBasketAsync(request);
75111
}
76112

77113
private BasketData MapToBasketData(CustomerBasketResponse customerBasketRequest)

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

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System;
1212
using static CatalogApi.Catalog;
1313
using System.Linq;
14+
using Grpc.Core;
1415

1516
namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services
1617
{
@@ -40,16 +41,36 @@ public async Task<CatalogItem> GetCatalogItemAsync(int id)
4041

4142
public async Task<IEnumerable<CatalogItem>> GetCatalogItemsAsync(IEnumerable<int> ids)
4243
{
43-
_httpClient.BaseAddress = new Uri(_urls.Catalog + UrlsConfig.CatalogOperations.GetItemsById(ids));
4444

45-
var client = GrpcClient.Create<CatalogClient>(_httpClient);
46-
var request = new CatalogItemsRequest { Ids = string.Join(",", ids), PageIndex = 1, PageSize = 10 };
47-
var response = await client.GetItemsByIdsAsync(request);
48-
return response.Data.Select(this.MapToCatalogItemResponse);
49-
//var stringContent = await _httpClient.GetStringAsync(_urls.Catalog + UrlsConfig.CatalogOperations.GetItemsById(ids));
50-
//var catalogItems = JsonConvert.DeserializeObject<CatalogItem[]>(stringContent);
45+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
46+
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
47+
48+
using (var httpClientHandler = new HttpClientHandler())
49+
{
50+
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
51+
using (var httpClient = new HttpClient(httpClientHandler))
52+
{
53+
httpClient.BaseAddress = new Uri(_urls.GrpcCatalog);
54+
55+
_logger.LogInformation("Creating grpc client for CatalogClient {@httpClient.BaseAddress}, {@httpClient} ", httpClient.BaseAddress, httpClient);
56+
57+
try
58+
{
59+
var client = GrpcClient.Create<CatalogClient>(httpClient);
60+
var request = new CatalogItemsRequest { Ids = string.Join(",", ids), PageIndex = 1, PageSize = 10 };
61+
_logger.LogInformation("grpc client created, request = {@request}", request);
62+
var response = await client.GetItemsByIdsAsync(request);
63+
_logger.LogInformation("grpc response {@response}", response);
64+
return response.Data.Select(this.MapToCatalogItemResponse);
65+
}
66+
catch (RpcException e)
67+
{
68+
_logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}");
69+
}
70+
}
71+
}
5172

52-
//return catalogItems;
73+
return null;
5374
}
5475

5576
private CatalogItem MapToCatalogItemResponse(CatalogItemResponse catalogItemResponse)

src/Services/Catalog/Catalog.API/Grpc/CatalogService.cs

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,12 @@ public override async Task<CatalogItemResponse> GetItemById(CatalogItemRequest r
6464

6565
public override async Task<PaginatedItemsResponse> GetItemsByIds(CatalogItemsRequest request, ServerCallContext context)
6666
{
67+
_logger.LogInformation("---------- GetItemsByIds request {@request}", request);
6768
if (!string.IsNullOrEmpty(request.Ids))
6869
{
6970
var items = await GetItemsByIdsAsync(request.Ids);
7071

72+
_logger.LogInformation("---------- GetItemsByIds items {@items}", items);
7173
if (!items.Any())
7274
{
7375
context.Status = new Status(StatusCode.NotFound, $"ids value invalid. Must be comma-separated list of numbers");
@@ -76,15 +78,18 @@ public override async Task<PaginatedItemsResponse> GetItemsByIds(CatalogItemsReq
7678
return this.MapToResponse(items);
7779
}
7880

81+
_logger.LogInformation("---------- GetItemsByIds else");
7982
var totalItems = await _catalogContext.CatalogItems
8083
.LongCountAsync();
8184

85+
_logger.LogInformation("---------- GetItemsByIds totalItems {@totalItems}", totalItems);
8286
var itemsOnPage = await _catalogContext.CatalogItems
8387
.OrderBy(c => c.Name)
8488
.Skip(request.PageSize * request.PageIndex)
8589
.Take(request.PageSize)
8690
.ToListAsync();
8791

92+
_logger.LogInformation("---------- GetItemsByIds itemsOnPage {@itemsOnPage}", itemsOnPage);
8893
/* The "awesome" fix for testing Devspaces */
8994

9095
/*
@@ -95,8 +100,10 @@ public override async Task<PaginatedItemsResponse> GetItemsByIds(CatalogItemsReq
95100
*/
96101

97102
itemsOnPage = ChangeUriPlaceholder(itemsOnPage);
103+
_logger.LogInformation("---------- GetItemsByIds itemsOnPage2 {@itemsOnPage}", itemsOnPage);
98104

99105
var model = this.MapToResponse(itemsOnPage, totalItems, request.PageIndex, request.PageSize);
106+
_logger.LogInformation("---------- GetItemsByIds model {@model}", model);
100107
context.Status = new Status(StatusCode.OK, string.Empty);
101108

102109
return model;
@@ -116,29 +123,39 @@ private PaginatedItemsResponse MapToResponse(List<CatalogItem> items, long count
116123
PageSize = pageSize,
117124
};
118125

119-
items.ForEach(i => result.Data.Add(new CatalogItemResponse()
126+
items.ForEach(i =>
120127
{
121-
AvailableStock = i.AvailableStock,
122-
Description = i.Description,
123-
Id = i.Id,
124-
MaxStockThreshold = i.MaxStockThreshold,
125-
Name = i.Name,
126-
OnReorder = i.OnReorder,
127-
PictureFileName = i.PictureFileName,
128-
PictureUri = i.PictureUri,
129-
RestockThreshold = i.RestockThreshold,
130-
CatalogBrand = new CatalogApi.CatalogBrand()
128+
var brand = i.CatalogBrand == null
129+
? null
130+
: new CatalogApi.CatalogBrand()
131+
{
132+
Id = i.CatalogBrand.Id,
133+
Name = i.CatalogBrand.Brand,
134+
};
135+
var catalogType = i.CatalogType == null
136+
? null
137+
: new CatalogApi.CatalogType()
138+
{
139+
Id = i.CatalogType.Id,
140+
Type = i.CatalogType.Type,
141+
};
142+
143+
result.Data.Add(new CatalogItemResponse()
131144
{
132-
Id = i.CatalogBrand.Id,
133-
Name = i.CatalogBrand.Brand,
134-
},
135-
CatalogType = new CatalogApi.CatalogType()
136-
{
137-
Id = i.CatalogType.Id,
138-
Type = i.CatalogType.Type,
139-
},
140-
Price = (double)i.Price,
141-
}));
145+
AvailableStock = i.AvailableStock,
146+
Description = i.Description,
147+
Id = i.Id,
148+
MaxStockThreshold = i.MaxStockThreshold,
149+
Name = i.Name,
150+
OnReorder = i.OnReorder,
151+
PictureFileName = i.PictureFileName,
152+
PictureUri = i.PictureUri,
153+
RestockThreshold = i.RestockThreshold,
154+
CatalogBrand = brand,
155+
CatalogType = catalogType,
156+
Price = (double)i.Price,
157+
});
158+
});
142159

143160
return result;
144161
}

src/Services/Catalog/Catalog.API/Proto/catalog.proto

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,5 @@ service Catalog {
5656
};
5757
<< */
5858
}
59-
rpc GetItemsByIds (CatalogItemsRequest) returns (PaginatedItemsResponse) {
60-
/* >>
61-
option (google.api.http) = {
62-
get: "/api/v1/catalog/items/ids/{ids}"
63-
};
64-
<< */
65-
}
59+
rpc GetItemsByIds (CatalogItemsRequest) returns (PaginatedItemsResponse) {}
6660
}

0 commit comments

Comments
 (0)