namespace Google.Cloud.Compute.V1.Snippets
{
    // [START compute_v1_generated_MachineImages_List_sync_flattened]
    using Google.Api.Gax;
    using Google.Cloud.Compute.V1;
    using System;

    public sealed partial class GeneratedMachineImagesClientSnippets
    {
        /// <summary>Snippet for List</summary>
        /// <remarks>
        /// This snippet has been automatically generated and should be regarded as a code template only.
        /// It will require modifications to work:
        /// - It may require correct/in-range values for request initialization.
        /// - It may require specifying regional endpoints when creating the service client as shown in
        ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
        /// </remarks>
        public void List()
        {
            // Create client
            MachineImagesClient machineImagesClient = MachineImagesClient.Create();
            // Initialize request argument(s)
            string project = "";
            // Make the request
            PagedEnumerable<MachineImageList, MachineImage> response = machineImagesClient.List(project);

            // Iterate over all response items, lazily performing RPCs as required
            foreach (MachineImage item in response)
            {
                // Do something with each item
                Console.WriteLine(item);
            }

            // Or iterate over pages (of server-defined size), performing one RPC per page
            foreach (MachineImageList page in response.AsRawResponses())
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (MachineImage 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<MachineImage> singlePage = response.ReadPage(pageSize);
            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (MachineImage 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 compute_v1_generated_MachineImages_List_sync_flattened]
}
