public async Task <SearchResult <Product> > GetBySearchAsync(string searchTerm, string languageCode, string categoryId, string pageCursor, int pageSize, ProductSortKey sortKey, bool reverse, string currencyCode) { return(await _grpcCallerService.CallService(_productServiceProvider.GrpcEndpoint, async (grpcChannel) => { var client = new ProductService.ProductServiceClient(grpcChannel); var response = await client.GetBySearchAsync(new GetBySearchRequest { SearchTerm = searchTerm, LanguageCode = languageCode, CategoryId = categoryId, PageCursor = pageCursor, PageSize = pageSize, SortKey = sortKey, Reverse = reverse, CurrencyCode = currencyCode, }); var results = response .Results .Select(x => new CursorNodeResult <Product> { Cursor = x.Cursor, Node = x.Node, }) .ToList(); return new SearchResult <Product> { HasNextPage = response.HasNextPage, HasPreviousPage = response.HasPreviousPage, StartCursor = response.StartCursor, EndCursor = response.EndCursor, TotalResults = response.TotalResults, Results = results, }; })); }