Beispiel #1
0
 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));
        }