partial checkin
This commit is contained in:
parent
67af71d2ce
commit
3fee58e666
@ -66,12 +66,48 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services
|
|||||||
|
|
||||||
public async Task UpdateAsync(BasketData currentBasket)
|
public async Task UpdateAsync(BasketData currentBasket)
|
||||||
{
|
{
|
||||||
_httpClient.BaseAddress = new Uri(_urls.Basket + UrlsConfig.BasketOperations.UpdateBasket());
|
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
|
||||||
|
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
|
||||||
|
|
||||||
var client = GrpcClient.Create<Basket.BasketClient>(_httpClient);
|
using (var httpClientHandler = new HttpClientHandler())
|
||||||
var request = MapToCustomerBasketRequest(currentBasket);
|
{
|
||||||
|
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
|
||||||
|
using (var httpClient = new HttpClient(httpClientHandler))
|
||||||
|
{
|
||||||
|
httpClient.BaseAddress = new Uri(_urls.GrpcBasket);
|
||||||
|
|
||||||
await client.UpdateBasketAsync(request);
|
_logger.LogDebug("Creating grpc client for basket {@httpClient.BaseAddress} ", httpClient.BaseAddress);
|
||||||
|
|
||||||
|
var client = GrpcClient.Create<Basket.BasketClient>(httpClient);
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
_logger.LogInformation("Grpc update basket currentBasket {@currentBasket}", currentBasket);
|
||||||
|
var request = MapToCustomerBasketRequest(currentBasket);
|
||||||
|
_logger.LogInformation("Grpc update basket request {@request}", request);
|
||||||
|
|
||||||
|
await client.UpdateBasketAsync(request);
|
||||||
|
}
|
||||||
|
catch (RpcException e)
|
||||||
|
{
|
||||||
|
_logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//_httpClient.BaseAddress = new Uri(_urls.Basket + UrlsConfig.BasketOperations.UpdateBasket());
|
||||||
|
|
||||||
|
//var client = GrpcClient.Create<Basket.BasketClient>(_httpClient);
|
||||||
|
//_logger.LogInformation("Grpc update basket currentBasket {@currentBasket}", currentBasket);
|
||||||
|
//var request = MapToCustomerBasketRequest(currentBasket);
|
||||||
|
//_logger.LogInformation("Grpc update basket request {@request}", request);
|
||||||
|
|
||||||
|
//await client.UpdateBasketAsync(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
private BasketData MapToBasketData(CustomerBasketResponse customerBasketRequest)
|
private BasketData MapToBasketData(CustomerBasketResponse customerBasketRequest)
|
||||||
|
@ -11,6 +11,7 @@ using Grpc.Net.Client;
|
|||||||
using System;
|
using System;
|
||||||
using static CatalogApi.Catalog;
|
using static CatalogApi.Catalog;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Grpc.Core;
|
||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services
|
namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services
|
||||||
{
|
{
|
||||||
@ -40,16 +41,36 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Services
|
|||||||
|
|
||||||
public async Task<IEnumerable<CatalogItem>> GetCatalogItemsAsync(IEnumerable<int> ids)
|
public async Task<IEnumerable<CatalogItem>> GetCatalogItemsAsync(IEnumerable<int> ids)
|
||||||
{
|
{
|
||||||
_httpClient.BaseAddress = new Uri(_urls.Catalog + UrlsConfig.CatalogOperations.GetItemsById(ids));
|
|
||||||
|
|
||||||
var client = GrpcClient.Create<CatalogClient>(_httpClient);
|
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
|
||||||
var request = new CatalogItemsRequest { Ids = string.Join(",", ids), PageIndex = 1, PageSize = 10 };
|
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
|
||||||
var response = await client.GetItemsByIdsAsync(request);
|
|
||||||
return response.Data.Select(this.MapToCatalogItemResponse);
|
|
||||||
//var stringContent = await _httpClient.GetStringAsync(_urls.Catalog + UrlsConfig.CatalogOperations.GetItemsById(ids));
|
|
||||||
//var catalogItems = JsonConvert.DeserializeObject<CatalogItem[]>(stringContent);
|
|
||||||
|
|
||||||
//return catalogItems;
|
using (var httpClientHandler = new HttpClientHandler())
|
||||||
|
{
|
||||||
|
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
|
||||||
|
using (var httpClient = new HttpClient(httpClientHandler))
|
||||||
|
{
|
||||||
|
httpClient.BaseAddress = new Uri(_urls.GrpcCatalog);
|
||||||
|
|
||||||
|
_logger.LogInformation("Creating grpc client for CatalogClient {@httpClient.BaseAddress}, {@httpClient} ", httpClient.BaseAddress, httpClient);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var client = GrpcClient.Create<CatalogClient>(httpClient);
|
||||||
|
var request = new CatalogItemsRequest { Ids = string.Join(",", ids), PageIndex = 1, PageSize = 10 };
|
||||||
|
_logger.LogInformation("grpc client created, request = {@request}", request);
|
||||||
|
var response = await client.GetItemsByIdsAsync(request);
|
||||||
|
_logger.LogInformation("grpc response {@response}", response);
|
||||||
|
return response.Data.Select(this.MapToCatalogItemResponse);
|
||||||
|
}
|
||||||
|
catch (RpcException e)
|
||||||
|
{
|
||||||
|
_logger.LogError($"Error calling via grpc: {e.Status} - {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CatalogItem MapToCatalogItemResponse(CatalogItemResponse catalogItemResponse)
|
private CatalogItem MapToCatalogItemResponse(CatalogItemResponse catalogItemResponse)
|
||||||
|
@ -64,10 +64,12 @@ namespace Catalog.API.Grpc
|
|||||||
|
|
||||||
public override async Task<PaginatedItemsResponse> GetItemsByIds(CatalogItemsRequest request, ServerCallContext context)
|
public override async Task<PaginatedItemsResponse> GetItemsByIds(CatalogItemsRequest request, ServerCallContext context)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("---------- GetItemsByIds request {@request}", request);
|
||||||
if (!string.IsNullOrEmpty(request.Ids))
|
if (!string.IsNullOrEmpty(request.Ids))
|
||||||
{
|
{
|
||||||
var items = await GetItemsByIdsAsync(request.Ids);
|
var items = await GetItemsByIdsAsync(request.Ids);
|
||||||
|
|
||||||
|
_logger.LogInformation("---------- GetItemsByIds items {@items}", items);
|
||||||
if (!items.Any())
|
if (!items.Any())
|
||||||
{
|
{
|
||||||
context.Status = new Status(StatusCode.NotFound, $"ids value invalid. Must be comma-separated list of numbers");
|
context.Status = new Status(StatusCode.NotFound, $"ids value invalid. Must be comma-separated list of numbers");
|
||||||
@ -76,15 +78,18 @@ namespace Catalog.API.Grpc
|
|||||||
return this.MapToResponse(items);
|
return this.MapToResponse(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_logger.LogInformation("---------- GetItemsByIds else");
|
||||||
var totalItems = await _catalogContext.CatalogItems
|
var totalItems = await _catalogContext.CatalogItems
|
||||||
.LongCountAsync();
|
.LongCountAsync();
|
||||||
|
|
||||||
|
_logger.LogInformation("---------- GetItemsByIds totalItems {@totalItems}", totalItems);
|
||||||
var itemsOnPage = await _catalogContext.CatalogItems
|
var itemsOnPage = await _catalogContext.CatalogItems
|
||||||
.OrderBy(c => c.Name)
|
.OrderBy(c => c.Name)
|
||||||
.Skip(request.PageSize * request.PageIndex)
|
.Skip(request.PageSize * request.PageIndex)
|
||||||
.Take(request.PageSize)
|
.Take(request.PageSize)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
_logger.LogInformation("---------- GetItemsByIds itemsOnPage {@itemsOnPage}", itemsOnPage);
|
||||||
/* The "awesome" fix for testing Devspaces */
|
/* The "awesome" fix for testing Devspaces */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -95,8 +100,10 @@ namespace Catalog.API.Grpc
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
itemsOnPage = ChangeUriPlaceholder(itemsOnPage);
|
itemsOnPage = ChangeUriPlaceholder(itemsOnPage);
|
||||||
|
_logger.LogInformation("---------- GetItemsByIds itemsOnPage2 {@itemsOnPage}", itemsOnPage);
|
||||||
|
|
||||||
var model = this.MapToResponse(itemsOnPage, totalItems, request.PageIndex, request.PageSize);
|
var model = this.MapToResponse(itemsOnPage, totalItems, request.PageIndex, request.PageSize);
|
||||||
|
_logger.LogInformation("---------- GetItemsByIds model {@model}", model);
|
||||||
context.Status = new Status(StatusCode.OK, string.Empty);
|
context.Status = new Status(StatusCode.OK, string.Empty);
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
@ -116,29 +123,39 @@ namespace Catalog.API.Grpc
|
|||||||
PageSize = pageSize,
|
PageSize = pageSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
items.ForEach(i => result.Data.Add(new CatalogItemResponse()
|
items.ForEach(i =>
|
||||||
{
|
{
|
||||||
AvailableStock = i.AvailableStock,
|
var brand = i.CatalogBrand == null
|
||||||
Description = i.Description,
|
? null
|
||||||
Id = i.Id,
|
: new CatalogApi.CatalogBrand()
|
||||||
MaxStockThreshold = i.MaxStockThreshold,
|
{
|
||||||
Name = i.Name,
|
Id = i.CatalogBrand.Id,
|
||||||
OnReorder = i.OnReorder,
|
Name = i.CatalogBrand.Brand,
|
||||||
PictureFileName = i.PictureFileName,
|
};
|
||||||
PictureUri = i.PictureUri,
|
var catalogType = i.CatalogType == null
|
||||||
RestockThreshold = i.RestockThreshold,
|
? null
|
||||||
CatalogBrand = new CatalogApi.CatalogBrand()
|
: new CatalogApi.CatalogType()
|
||||||
|
{
|
||||||
|
Id = i.CatalogType.Id,
|
||||||
|
Type = i.CatalogType.Type,
|
||||||
|
};
|
||||||
|
|
||||||
|
result.Data.Add(new CatalogItemResponse()
|
||||||
{
|
{
|
||||||
Id = i.CatalogBrand.Id,
|
AvailableStock = i.AvailableStock,
|
||||||
Name = i.CatalogBrand.Brand,
|
Description = i.Description,
|
||||||
},
|
Id = i.Id,
|
||||||
CatalogType = new CatalogApi.CatalogType()
|
MaxStockThreshold = i.MaxStockThreshold,
|
||||||
{
|
Name = i.Name,
|
||||||
Id = i.CatalogType.Id,
|
OnReorder = i.OnReorder,
|
||||||
Type = i.CatalogType.Type,
|
PictureFileName = i.PictureFileName,
|
||||||
},
|
PictureUri = i.PictureUri,
|
||||||
Price = (double)i.Price,
|
RestockThreshold = i.RestockThreshold,
|
||||||
}));
|
CatalogBrand = brand,
|
||||||
|
CatalogType = catalogType,
|
||||||
|
Price = (double)i.Price,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -56,11 +56,5 @@ service Catalog {
|
|||||||
};
|
};
|
||||||
<< */
|
<< */
|
||||||
}
|
}
|
||||||
rpc GetItemsByIds (CatalogItemsRequest) returns (PaginatedItemsResponse) {
|
rpc GetItemsByIds (CatalogItemsRequest) returns (PaginatedItemsResponse) {}
|
||||||
/* >>
|
|
||||||
option (google.api.http) = {
|
|
||||||
get: "/api/v1/catalog/items/ids/{ids}"
|
|
||||||
};
|
|
||||||
<< */
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user