1package compute 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "github.com/Azure/go-autorest/autorest" 12 "github.com/Azure/go-autorest/autorest/azure" 13 "github.com/Azure/go-autorest/tracing" 14 "net/http" 15) 16 17// ResourceSkusClient is the compute Client 18type ResourceSkusClient struct { 19 BaseClient 20} 21 22// NewResourceSkusClient creates an instance of the ResourceSkusClient client. 23func NewResourceSkusClient(subscriptionID string) ResourceSkusClient { 24 return NewResourceSkusClientWithBaseURI(DefaultBaseURI, subscriptionID) 25} 26 27// NewResourceSkusClientWithBaseURI creates an instance of the ResourceSkusClient client using a custom endpoint. Use 28// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 29func NewResourceSkusClientWithBaseURI(baseURI string, subscriptionID string) ResourceSkusClient { 30 return ResourceSkusClient{NewWithBaseURI(baseURI, subscriptionID)} 31} 32 33// List gets the list of Microsoft.Compute SKUs available for your Subscription. 34// Parameters: 35// filter - the filter to apply on the operation. Only **location** filter is supported currently. 36func (client ResourceSkusClient) List(ctx context.Context, filter string) (result ResourceSkusResultPage, err error) { 37 if tracing.IsEnabled() { 38 ctx = tracing.StartSpan(ctx, fqdn+"/ResourceSkusClient.List") 39 defer func() { 40 sc := -1 41 if result.rsr.Response.Response != nil { 42 sc = result.rsr.Response.Response.StatusCode 43 } 44 tracing.EndSpan(ctx, sc, err) 45 }() 46 } 47 result.fn = client.listNextResults 48 req, err := client.ListPreparer(ctx, filter) 49 if err != nil { 50 err = autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "List", nil, "Failure preparing request") 51 return 52 } 53 54 resp, err := client.ListSender(req) 55 if err != nil { 56 result.rsr.Response = autorest.Response{Response: resp} 57 err = autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "List", resp, "Failure sending request") 58 return 59 } 60 61 result.rsr, err = client.ListResponder(resp) 62 if err != nil { 63 err = autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "List", resp, "Failure responding to request") 64 return 65 } 66 if result.rsr.hasNextLink() && result.rsr.IsEmpty() { 67 err = result.NextWithContext(ctx) 68 return 69 } 70 71 return 72} 73 74// ListPreparer prepares the List request. 75func (client ResourceSkusClient) ListPreparer(ctx context.Context, filter string) (*http.Request, error) { 76 pathParameters := map[string]interface{}{ 77 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 78 } 79 80 const APIVersion = "2019-04-01" 81 queryParameters := map[string]interface{}{ 82 "api-version": APIVersion, 83 } 84 if len(filter) > 0 { 85 queryParameters["$filter"] = autorest.Encode("query", filter) 86 } 87 88 preparer := autorest.CreatePreparer( 89 autorest.AsGet(), 90 autorest.WithBaseURL(client.BaseURI), 91 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/skus", pathParameters), 92 autorest.WithQueryParameters(queryParameters)) 93 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 94} 95 96// ListSender sends the List request. The method will close the 97// http.Response Body if it receives an error. 98func (client ResourceSkusClient) ListSender(req *http.Request) (*http.Response, error) { 99 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 100} 101 102// ListResponder handles the response to the List request. The method always 103// closes the http.Response Body. 104func (client ResourceSkusClient) ListResponder(resp *http.Response) (result ResourceSkusResult, err error) { 105 err = autorest.Respond( 106 resp, 107 azure.WithErrorUnlessStatusCode(http.StatusOK), 108 autorest.ByUnmarshallingJSON(&result), 109 autorest.ByClosing()) 110 result.Response = autorest.Response{Response: resp} 111 return 112} 113 114// listNextResults retrieves the next set of results, if any. 115func (client ResourceSkusClient) listNextResults(ctx context.Context, lastResults ResourceSkusResult) (result ResourceSkusResult, err error) { 116 req, err := lastResults.resourceSkusResultPreparer(ctx) 117 if err != nil { 118 return result, autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "listNextResults", nil, "Failure preparing next results request") 119 } 120 if req == nil { 121 return 122 } 123 resp, err := client.ListSender(req) 124 if err != nil { 125 result.Response = autorest.Response{Response: resp} 126 return result, autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "listNextResults", resp, "Failure sending next results request") 127 } 128 result, err = client.ListResponder(resp) 129 if err != nil { 130 err = autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "listNextResults", resp, "Failure responding to next results request") 131 } 132 return 133} 134 135// ListComplete enumerates all values, automatically crossing page boundaries as required. 136func (client ResourceSkusClient) ListComplete(ctx context.Context, filter string) (result ResourceSkusResultIterator, err error) { 137 if tracing.IsEnabled() { 138 ctx = tracing.StartSpan(ctx, fqdn+"/ResourceSkusClient.List") 139 defer func() { 140 sc := -1 141 if result.Response().Response.Response != nil { 142 sc = result.page.Response().Response.Response.StatusCode 143 } 144 tracing.EndSpan(ctx, sc, err) 145 }() 146 } 147 result.page, err = client.List(ctx, filter) 148 return 149} 150