public async Task <IReadOnlyList <Models.CatalogItem> > ListCatalogItems(int startIndex = 0, int pageSize = 10) { return(await GrpcCallerService.CallService(urls.CatalogGrpc, async channel => { var client = new CatalogClient(channel); var request = new ListCatalogItemsRequest { StartIndex = startIndex, PageSize = pageSize }; var response = await client.ListCatalogItemsAsync(request); return MapResponse(response); })); }
/// <summary>Snippet for ListCatalogItems</summary> public async Task ListCatalogItemsRequestObjectAsync() { // Snippet: ListCatalogItemsAsync(ListCatalogItemsRequest, CallSettings) // Create client CatalogServiceClient catalogServiceClient = await CatalogServiceClient.CreateAsync(); // Initialize request argument(s) ListCatalogItemsRequest request = new ListCatalogItemsRequest { ParentAsCatalogName = CatalogName.FromProjectLocationCatalog("[PROJECT]", "[LOCATION]", "[CATALOG]"), Filter = "", }; // Make the request PagedAsyncEnumerable <ListCatalogItemsResponse, CatalogItem> response = catalogServiceClient.ListCatalogItemsAsync(request); // Iterate over all response items, lazily performing RPCs as required await response.ForEachAsync((CatalogItem item) => { // Do something with each item Console.WriteLine(item); }); // Or iterate over pages (of server-defined size), performing one RPC per page await response.AsRawResponses().ForEachAsync((ListCatalogItemsResponse page) => { // Do something with each page of items Console.WriteLine("A page of results:"); foreach (CatalogItem item in page) { // Do something with each item Console.WriteLine(item); } }); // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required int pageSize = 10; Page <CatalogItem> singlePage = await response.ReadPageAsync(pageSize); // Do something with the page of items Console.WriteLine($"A page of {pageSize} results (unless it's the final page):"); foreach (CatalogItem item in singlePage) { // Do something with each item Console.WriteLine(item); } // Store the pageToken, for when the next page is required. string nextPageToken = singlePage.NextPageToken; // End snippet }
public override Task <ListCatalogItemsResponse> ListCatalogItems(ListCatalogItemsRequest request, ServerCallContext context) { var priceGenerator = new Random(); var sampleItems = Enumerable.Range(request.StartIndex, request.PageSize).Select(index => new CatalogItem { Id = index, Name = $"Item {index}", Price = priceGenerator.Next(10, 100) }); var response = new ListCatalogItemsResponse { StartIndex = request.StartIndex, PageSize = request.PageSize, TotalCount = totalCount }; response.Data.AddRange(sampleItems); return(Task.FromResult(response)); }