1package hybridnetwork 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/autorest/validation" 14 "github.com/Azure/go-autorest/tracing" 15 "net/http" 16) 17 18// VendorSkusClient is the client for the VendorSkus methods of the Hybridnetwork service. 19type VendorSkusClient struct { 20 BaseClient 21} 22 23// NewVendorSkusClient creates an instance of the VendorSkusClient client. 24func NewVendorSkusClient(subscriptionID string) VendorSkusClient { 25 return NewVendorSkusClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewVendorSkusClientWithBaseURI creates an instance of the VendorSkusClient client using a custom endpoint. Use this 29// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 30func NewVendorSkusClientWithBaseURI(baseURI string, subscriptionID string) VendorSkusClient { 31 return VendorSkusClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// CreateOrUpdate creates or updates a sku 35// Parameters: 36// vendorName - the name of the vendor. 37// skuName - the name of the sku. 38// parameters - parameters supplied to the create or update sku operation. 39func (client VendorSkusClient) CreateOrUpdate(ctx context.Context, vendorName string, skuName string, parameters VendorSku) (result VendorSkusCreateOrUpdateFuture, err error) { 40 if tracing.IsEnabled() { 41 ctx = tracing.StartSpan(ctx, fqdn+"/VendorSkusClient.CreateOrUpdate") 42 defer func() { 43 sc := -1 44 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 45 sc = result.FutureAPI.Response().StatusCode 46 } 47 tracing.EndSpan(ctx, sc, err) 48 }() 49 } 50 if err := validation.Validate([]validation.Validation{ 51 {TargetValue: client.SubscriptionID, 52 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 53 return result, validation.NewError("hybridnetwork.VendorSkusClient", "CreateOrUpdate", err.Error()) 54 } 55 56 req, err := client.CreateOrUpdatePreparer(ctx, vendorName, skuName, parameters) 57 if err != nil { 58 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "CreateOrUpdate", nil, "Failure preparing request") 59 return 60 } 61 62 result, err = client.CreateOrUpdateSender(req) 63 if err != nil { 64 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "CreateOrUpdate", nil, "Failure sending request") 65 return 66 } 67 68 return 69} 70 71// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 72func (client VendorSkusClient) CreateOrUpdatePreparer(ctx context.Context, vendorName string, skuName string, parameters VendorSku) (*http.Request, error) { 73 pathParameters := map[string]interface{}{ 74 "skuName": autorest.Encode("path", skuName), 75 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 76 "vendorName": autorest.Encode("path", vendorName), 77 } 78 79 const APIVersion = "2020-01-01-preview" 80 queryParameters := map[string]interface{}{ 81 "api-version": APIVersion, 82 } 83 84 preparer := autorest.CreatePreparer( 85 autorest.AsContentType("application/json; charset=utf-8"), 86 autorest.AsPut(), 87 autorest.WithBaseURL(client.BaseURI), 88 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.HybridNetwork/vendors/{vendorName}/vendorSkus/{skuName}", pathParameters), 89 autorest.WithJSON(parameters), 90 autorest.WithQueryParameters(queryParameters)) 91 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 92} 93 94// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 95// http.Response Body if it receives an error. 96func (client VendorSkusClient) CreateOrUpdateSender(req *http.Request) (future VendorSkusCreateOrUpdateFuture, err error) { 97 var resp *http.Response 98 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 99 if err != nil { 100 return 101 } 102 var azf azure.Future 103 azf, err = azure.NewFutureFromResponse(resp) 104 future.FutureAPI = &azf 105 future.Result = future.result 106 return 107} 108 109// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 110// closes the http.Response Body. 111func (client VendorSkusClient) CreateOrUpdateResponder(resp *http.Response) (result VendorSku, err error) { 112 err = autorest.Respond( 113 resp, 114 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), 115 autorest.ByUnmarshallingJSON(&result), 116 autorest.ByClosing()) 117 result.Response = autorest.Response{Response: resp} 118 return 119} 120 121// Delete deletes the specified sku. 122// Parameters: 123// vendorName - the name of the vendor. 124// skuName - the name of the sku. 125func (client VendorSkusClient) Delete(ctx context.Context, vendorName string, skuName string) (result VendorSkusDeleteFuture, err error) { 126 if tracing.IsEnabled() { 127 ctx = tracing.StartSpan(ctx, fqdn+"/VendorSkusClient.Delete") 128 defer func() { 129 sc := -1 130 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 131 sc = result.FutureAPI.Response().StatusCode 132 } 133 tracing.EndSpan(ctx, sc, err) 134 }() 135 } 136 if err := validation.Validate([]validation.Validation{ 137 {TargetValue: client.SubscriptionID, 138 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 139 return result, validation.NewError("hybridnetwork.VendorSkusClient", "Delete", err.Error()) 140 } 141 142 req, err := client.DeletePreparer(ctx, vendorName, skuName) 143 if err != nil { 144 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "Delete", nil, "Failure preparing request") 145 return 146 } 147 148 result, err = client.DeleteSender(req) 149 if err != nil { 150 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "Delete", nil, "Failure sending request") 151 return 152 } 153 154 return 155} 156 157// DeletePreparer prepares the Delete request. 158func (client VendorSkusClient) DeletePreparer(ctx context.Context, vendorName string, skuName string) (*http.Request, error) { 159 pathParameters := map[string]interface{}{ 160 "skuName": autorest.Encode("path", skuName), 161 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 162 "vendorName": autorest.Encode("path", vendorName), 163 } 164 165 const APIVersion = "2020-01-01-preview" 166 queryParameters := map[string]interface{}{ 167 "api-version": APIVersion, 168 } 169 170 preparer := autorest.CreatePreparer( 171 autorest.AsDelete(), 172 autorest.WithBaseURL(client.BaseURI), 173 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.HybridNetwork/vendors/{vendorName}/vendorSkus/{skuName}", pathParameters), 174 autorest.WithQueryParameters(queryParameters)) 175 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 176} 177 178// DeleteSender sends the Delete request. The method will close the 179// http.Response Body if it receives an error. 180func (client VendorSkusClient) DeleteSender(req *http.Request) (future VendorSkusDeleteFuture, err error) { 181 var resp *http.Response 182 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 183 if err != nil { 184 return 185 } 186 var azf azure.Future 187 azf, err = azure.NewFutureFromResponse(resp) 188 future.FutureAPI = &azf 189 future.Result = future.result 190 return 191} 192 193// DeleteResponder handles the response to the Delete request. The method always 194// closes the http.Response Body. 195func (client VendorSkusClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 196 err = autorest.Respond( 197 resp, 198 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 199 autorest.ByClosing()) 200 result.Response = resp 201 return 202} 203 204// Get gets information about the specified sku. 205// Parameters: 206// vendorName - the name of the vendor. 207// skuName - the name of the sku. 208func (client VendorSkusClient) Get(ctx context.Context, vendorName string, skuName string) (result VendorSku, err error) { 209 if tracing.IsEnabled() { 210 ctx = tracing.StartSpan(ctx, fqdn+"/VendorSkusClient.Get") 211 defer func() { 212 sc := -1 213 if result.Response.Response != nil { 214 sc = result.Response.Response.StatusCode 215 } 216 tracing.EndSpan(ctx, sc, err) 217 }() 218 } 219 if err := validation.Validate([]validation.Validation{ 220 {TargetValue: client.SubscriptionID, 221 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 222 return result, validation.NewError("hybridnetwork.VendorSkusClient", "Get", err.Error()) 223 } 224 225 req, err := client.GetPreparer(ctx, vendorName, skuName) 226 if err != nil { 227 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "Get", nil, "Failure preparing request") 228 return 229 } 230 231 resp, err := client.GetSender(req) 232 if err != nil { 233 result.Response = autorest.Response{Response: resp} 234 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "Get", resp, "Failure sending request") 235 return 236 } 237 238 result, err = client.GetResponder(resp) 239 if err != nil { 240 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "Get", resp, "Failure responding to request") 241 return 242 } 243 244 return 245} 246 247// GetPreparer prepares the Get request. 248func (client VendorSkusClient) GetPreparer(ctx context.Context, vendorName string, skuName string) (*http.Request, error) { 249 pathParameters := map[string]interface{}{ 250 "skuName": autorest.Encode("path", skuName), 251 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 252 "vendorName": autorest.Encode("path", vendorName), 253 } 254 255 const APIVersion = "2020-01-01-preview" 256 queryParameters := map[string]interface{}{ 257 "api-version": APIVersion, 258 } 259 260 preparer := autorest.CreatePreparer( 261 autorest.AsGet(), 262 autorest.WithBaseURL(client.BaseURI), 263 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.HybridNetwork/vendors/{vendorName}/vendorSkus/{skuName}", pathParameters), 264 autorest.WithQueryParameters(queryParameters)) 265 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 266} 267 268// GetSender sends the Get request. The method will close the 269// http.Response Body if it receives an error. 270func (client VendorSkusClient) GetSender(req *http.Request) (*http.Response, error) { 271 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 272} 273 274// GetResponder handles the response to the Get request. The method always 275// closes the http.Response Body. 276func (client VendorSkusClient) GetResponder(resp *http.Response) (result VendorSku, err error) { 277 err = autorest.Respond( 278 resp, 279 azure.WithErrorUnlessStatusCode(http.StatusOK), 280 autorest.ByUnmarshallingJSON(&result), 281 autorest.ByClosing()) 282 result.Response = autorest.Response{Response: resp} 283 return 284} 285 286// List lists all the skus of a vendor. 287// Parameters: 288// vendorName - the name of the vendor. 289func (client VendorSkusClient) List(ctx context.Context, vendorName string) (result VendorSkuListResultPage, err error) { 290 if tracing.IsEnabled() { 291 ctx = tracing.StartSpan(ctx, fqdn+"/VendorSkusClient.List") 292 defer func() { 293 sc := -1 294 if result.vslr.Response.Response != nil { 295 sc = result.vslr.Response.Response.StatusCode 296 } 297 tracing.EndSpan(ctx, sc, err) 298 }() 299 } 300 if err := validation.Validate([]validation.Validation{ 301 {TargetValue: client.SubscriptionID, 302 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 303 return result, validation.NewError("hybridnetwork.VendorSkusClient", "List", err.Error()) 304 } 305 306 result.fn = client.listNextResults 307 req, err := client.ListPreparer(ctx, vendorName) 308 if err != nil { 309 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "List", nil, "Failure preparing request") 310 return 311 } 312 313 resp, err := client.ListSender(req) 314 if err != nil { 315 result.vslr.Response = autorest.Response{Response: resp} 316 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "List", resp, "Failure sending request") 317 return 318 } 319 320 result.vslr, err = client.ListResponder(resp) 321 if err != nil { 322 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "List", resp, "Failure responding to request") 323 return 324 } 325 if result.vslr.hasNextLink() && result.vslr.IsEmpty() { 326 err = result.NextWithContext(ctx) 327 return 328 } 329 330 return 331} 332 333// ListPreparer prepares the List request. 334func (client VendorSkusClient) ListPreparer(ctx context.Context, vendorName string) (*http.Request, error) { 335 pathParameters := map[string]interface{}{ 336 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 337 "vendorName": autorest.Encode("path", vendorName), 338 } 339 340 const APIVersion = "2020-01-01-preview" 341 queryParameters := map[string]interface{}{ 342 "api-version": APIVersion, 343 } 344 345 preparer := autorest.CreatePreparer( 346 autorest.AsGet(), 347 autorest.WithBaseURL(client.BaseURI), 348 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.HybridNetwork/vendors/{vendorName}/vendorSkus", pathParameters), 349 autorest.WithQueryParameters(queryParameters)) 350 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 351} 352 353// ListSender sends the List request. The method will close the 354// http.Response Body if it receives an error. 355func (client VendorSkusClient) ListSender(req *http.Request) (*http.Response, error) { 356 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 357} 358 359// ListResponder handles the response to the List request. The method always 360// closes the http.Response Body. 361func (client VendorSkusClient) ListResponder(resp *http.Response) (result VendorSkuListResult, err error) { 362 err = autorest.Respond( 363 resp, 364 azure.WithErrorUnlessStatusCode(http.StatusOK), 365 autorest.ByUnmarshallingJSON(&result), 366 autorest.ByClosing()) 367 result.Response = autorest.Response{Response: resp} 368 return 369} 370 371// listNextResults retrieves the next set of results, if any. 372func (client VendorSkusClient) listNextResults(ctx context.Context, lastResults VendorSkuListResult) (result VendorSkuListResult, err error) { 373 req, err := lastResults.vendorSkuListResultPreparer(ctx) 374 if err != nil { 375 return result, autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "listNextResults", nil, "Failure preparing next results request") 376 } 377 if req == nil { 378 return 379 } 380 resp, err := client.ListSender(req) 381 if err != nil { 382 result.Response = autorest.Response{Response: resp} 383 return result, autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "listNextResults", resp, "Failure sending next results request") 384 } 385 result, err = client.ListResponder(resp) 386 if err != nil { 387 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorSkusClient", "listNextResults", resp, "Failure responding to next results request") 388 } 389 return 390} 391 392// ListComplete enumerates all values, automatically crossing page boundaries as required. 393func (client VendorSkusClient) ListComplete(ctx context.Context, vendorName string) (result VendorSkuListResultIterator, err error) { 394 if tracing.IsEnabled() { 395 ctx = tracing.StartSpan(ctx, fqdn+"/VendorSkusClient.List") 396 defer func() { 397 sc := -1 398 if result.Response().Response.Response != nil { 399 sc = result.page.Response().Response.Response.StatusCode 400 } 401 tracing.EndSpan(ctx, sc, err) 402 }() 403 } 404 result.page, err = client.List(ctx, vendorName) 405 return 406} 407