1package cdn 2 3// Copyright (c) Microsoft and contributors. All rights reserved. 4// 5// Licensed under the Apache License, Version 2.0 (the "License"); 6// you may not use this file except in compliance with the License. 7// You may obtain a copy of the License at 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// 14// See the License for the specific language governing permissions and 15// limitations under the License. 16// 17// Code generated by Microsoft (R) AutoRest Code Generator. 18// Changes may cause incorrect behavior and will be lost if the code is regenerated. 19 20import ( 21 "context" 22 "github.com/Azure/go-autorest/autorest" 23 "github.com/Azure/go-autorest/autorest/azure" 24 "github.com/Azure/go-autorest/autorest/validation" 25 "github.com/Azure/go-autorest/tracing" 26 "net/http" 27) 28 29// PoliciesClient is the cdn Management Client 30type PoliciesClient struct { 31 BaseClient 32} 33 34// NewPoliciesClient creates an instance of the PoliciesClient client. 35func NewPoliciesClient(subscriptionID string) PoliciesClient { 36 return NewPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID) 37} 38 39// NewPoliciesClientWithBaseURI creates an instance of the PoliciesClient client using a custom endpoint. Use this 40// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 41func NewPoliciesClientWithBaseURI(baseURI string, subscriptionID string) PoliciesClient { 42 return PoliciesClient{NewWithBaseURI(baseURI, subscriptionID)} 43} 44 45// CreateOrUpdate create or update policy with specified rule set name within a resource group. 46// Parameters: 47// resourceGroupName - name of the Resource group within the Azure subscription. 48// policyName - the name of the CdnWebApplicationFirewallPolicy. 49// cdnWebApplicationFirewallPolicy - policy to be created. 50func (client PoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, policyName string, cdnWebApplicationFirewallPolicy WebApplicationFirewallPolicy) (result PoliciesCreateOrUpdateFuture, err error) { 51 if tracing.IsEnabled() { 52 ctx = tracing.StartSpan(ctx, fqdn+"/PoliciesClient.CreateOrUpdate") 53 defer func() { 54 sc := -1 55 if result.Response() != nil { 56 sc = result.Response().StatusCode 57 } 58 tracing.EndSpan(ctx, sc, err) 59 }() 60 } 61 if err := validation.Validate([]validation.Validation{ 62 {TargetValue: resourceGroupName, 63 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 80, Chain: nil}, 64 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 65 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9_\-\(\)\.]*[^\.]$`, Chain: nil}}}, 66 {TargetValue: policyName, 67 Constraints: []validation.Constraint{{Target: "policyName", Name: validation.MaxLength, Rule: 128, Chain: nil}}}, 68 {TargetValue: cdnWebApplicationFirewallPolicy, 69 Constraints: []validation.Constraint{{Target: "cdnWebApplicationFirewallPolicy.WebApplicationFirewallPolicyProperties", Name: validation.Null, Rule: false, 70 Chain: []validation.Constraint{{Target: "cdnWebApplicationFirewallPolicy.WebApplicationFirewallPolicyProperties.PolicySettings", Name: validation.Null, Rule: false, 71 Chain: []validation.Constraint{{Target: "cdnWebApplicationFirewallPolicy.WebApplicationFirewallPolicyProperties.PolicySettings.DefaultCustomBlockResponseBody", Name: validation.Null, Rule: false, 72 Chain: []validation.Constraint{{Target: "cdnWebApplicationFirewallPolicy.WebApplicationFirewallPolicyProperties.PolicySettings.DefaultCustomBlockResponseBody", Name: validation.Pattern, Rule: `^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$`, Chain: nil}}}, 73 }}, 74 }}, 75 {Target: "cdnWebApplicationFirewallPolicy.Sku", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { 76 return result, validation.NewError("cdn.PoliciesClient", "CreateOrUpdate", err.Error()) 77 } 78 79 req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, policyName, cdnWebApplicationFirewallPolicy) 80 if err != nil { 81 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "CreateOrUpdate", nil, "Failure preparing request") 82 return 83 } 84 85 result, err = client.CreateOrUpdateSender(req) 86 if err != nil { 87 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "CreateOrUpdate", nil, "Failure sending request") 88 return 89 } 90 91 return 92} 93 94// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 95func (client PoliciesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, policyName string, cdnWebApplicationFirewallPolicy WebApplicationFirewallPolicy) (*http.Request, error) { 96 pathParameters := map[string]interface{}{ 97 "policyName": autorest.Encode("path", policyName), 98 "resourceGroupName": autorest.Encode("path", resourceGroupName), 99 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 100 } 101 102 const APIVersion = "2020-09-01" 103 queryParameters := map[string]interface{}{ 104 "api-version": APIVersion, 105 } 106 107 preparer := autorest.CreatePreparer( 108 autorest.AsContentType("application/json; charset=utf-8"), 109 autorest.AsPut(), 110 autorest.WithBaseURL(client.BaseURI), 111 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies/{policyName}", pathParameters), 112 autorest.WithJSON(cdnWebApplicationFirewallPolicy), 113 autorest.WithQueryParameters(queryParameters)) 114 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 115} 116 117// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 118// http.Response Body if it receives an error. 119func (client PoliciesClient) CreateOrUpdateSender(req *http.Request) (future PoliciesCreateOrUpdateFuture, err error) { 120 var resp *http.Response 121 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 122 if err != nil { 123 return 124 } 125 var azf azure.Future 126 azf, err = azure.NewFutureFromResponse(resp) 127 future.FutureAPI = &azf 128 future.Result = func(client PoliciesClient) (wafp WebApplicationFirewallPolicy, err error) { 129 var done bool 130 done, err = future.DoneWithContext(context.Background(), client) 131 if err != nil { 132 err = autorest.NewErrorWithError(err, "cdn.PoliciesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") 133 return 134 } 135 if !done { 136 err = azure.NewAsyncOpIncompleteError("cdn.PoliciesCreateOrUpdateFuture") 137 return 138 } 139 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 140 if wafp.Response.Response, err = future.GetResult(sender); err == nil && wafp.Response.Response.StatusCode != http.StatusNoContent { 141 wafp, err = client.CreateOrUpdateResponder(wafp.Response.Response) 142 if err != nil { 143 err = autorest.NewErrorWithError(err, "cdn.PoliciesCreateOrUpdateFuture", "Result", wafp.Response.Response, "Failure responding to request") 144 } 145 } 146 return 147 } 148 return 149} 150 151// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 152// closes the http.Response Body. 153func (client PoliciesClient) CreateOrUpdateResponder(resp *http.Response) (result WebApplicationFirewallPolicy, err error) { 154 err = autorest.Respond( 155 resp, 156 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted), 157 autorest.ByUnmarshallingJSON(&result), 158 autorest.ByClosing()) 159 result.Response = autorest.Response{Response: resp} 160 return 161} 162 163// Delete deletes Policy 164// Parameters: 165// resourceGroupName - name of the Resource group within the Azure subscription. 166// policyName - the name of the CdnWebApplicationFirewallPolicy. 167func (client PoliciesClient) Delete(ctx context.Context, resourceGroupName string, policyName string) (result autorest.Response, err error) { 168 if tracing.IsEnabled() { 169 ctx = tracing.StartSpan(ctx, fqdn+"/PoliciesClient.Delete") 170 defer func() { 171 sc := -1 172 if result.Response != nil { 173 sc = result.Response.StatusCode 174 } 175 tracing.EndSpan(ctx, sc, err) 176 }() 177 } 178 if err := validation.Validate([]validation.Validation{ 179 {TargetValue: resourceGroupName, 180 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 80, Chain: nil}, 181 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 182 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9_\-\(\)\.]*[^\.]$`, Chain: nil}}}, 183 {TargetValue: policyName, 184 Constraints: []validation.Constraint{{Target: "policyName", Name: validation.MaxLength, Rule: 128, Chain: nil}}}}); err != nil { 185 return result, validation.NewError("cdn.PoliciesClient", "Delete", err.Error()) 186 } 187 188 req, err := client.DeletePreparer(ctx, resourceGroupName, policyName) 189 if err != nil { 190 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "Delete", nil, "Failure preparing request") 191 return 192 } 193 194 resp, err := client.DeleteSender(req) 195 if err != nil { 196 result.Response = resp 197 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "Delete", resp, "Failure sending request") 198 return 199 } 200 201 result, err = client.DeleteResponder(resp) 202 if err != nil { 203 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "Delete", resp, "Failure responding to request") 204 return 205 } 206 207 return 208} 209 210// DeletePreparer prepares the Delete request. 211func (client PoliciesClient) DeletePreparer(ctx context.Context, resourceGroupName string, policyName string) (*http.Request, error) { 212 pathParameters := map[string]interface{}{ 213 "policyName": autorest.Encode("path", policyName), 214 "resourceGroupName": autorest.Encode("path", resourceGroupName), 215 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 216 } 217 218 const APIVersion = "2020-09-01" 219 queryParameters := map[string]interface{}{ 220 "api-version": APIVersion, 221 } 222 223 preparer := autorest.CreatePreparer( 224 autorest.AsDelete(), 225 autorest.WithBaseURL(client.BaseURI), 226 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies/{policyName}", pathParameters), 227 autorest.WithQueryParameters(queryParameters)) 228 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 229} 230 231// DeleteSender sends the Delete request. The method will close the 232// http.Response Body if it receives an error. 233func (client PoliciesClient) DeleteSender(req *http.Request) (*http.Response, error) { 234 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 235} 236 237// DeleteResponder handles the response to the Delete request. The method always 238// closes the http.Response Body. 239func (client PoliciesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 240 err = autorest.Respond( 241 resp, 242 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), 243 autorest.ByClosing()) 244 result.Response = resp 245 return 246} 247 248// Get retrieve protection policy with specified name within a resource group. 249// Parameters: 250// resourceGroupName - name of the Resource group within the Azure subscription. 251// policyName - the name of the CdnWebApplicationFirewallPolicy. 252func (client PoliciesClient) Get(ctx context.Context, resourceGroupName string, policyName string) (result WebApplicationFirewallPolicy, err error) { 253 if tracing.IsEnabled() { 254 ctx = tracing.StartSpan(ctx, fqdn+"/PoliciesClient.Get") 255 defer func() { 256 sc := -1 257 if result.Response.Response != nil { 258 sc = result.Response.Response.StatusCode 259 } 260 tracing.EndSpan(ctx, sc, err) 261 }() 262 } 263 if err := validation.Validate([]validation.Validation{ 264 {TargetValue: resourceGroupName, 265 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 80, Chain: nil}, 266 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 267 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9_\-\(\)\.]*[^\.]$`, Chain: nil}}}, 268 {TargetValue: policyName, 269 Constraints: []validation.Constraint{{Target: "policyName", Name: validation.MaxLength, Rule: 128, Chain: nil}}}}); err != nil { 270 return result, validation.NewError("cdn.PoliciesClient", "Get", err.Error()) 271 } 272 273 req, err := client.GetPreparer(ctx, resourceGroupName, policyName) 274 if err != nil { 275 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "Get", nil, "Failure preparing request") 276 return 277 } 278 279 resp, err := client.GetSender(req) 280 if err != nil { 281 result.Response = autorest.Response{Response: resp} 282 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "Get", resp, "Failure sending request") 283 return 284 } 285 286 result, err = client.GetResponder(resp) 287 if err != nil { 288 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "Get", resp, "Failure responding to request") 289 return 290 } 291 292 return 293} 294 295// GetPreparer prepares the Get request. 296func (client PoliciesClient) GetPreparer(ctx context.Context, resourceGroupName string, policyName string) (*http.Request, error) { 297 pathParameters := map[string]interface{}{ 298 "policyName": autorest.Encode("path", policyName), 299 "resourceGroupName": autorest.Encode("path", resourceGroupName), 300 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 301 } 302 303 const APIVersion = "2020-09-01" 304 queryParameters := map[string]interface{}{ 305 "api-version": APIVersion, 306 } 307 308 preparer := autorest.CreatePreparer( 309 autorest.AsGet(), 310 autorest.WithBaseURL(client.BaseURI), 311 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies/{policyName}", pathParameters), 312 autorest.WithQueryParameters(queryParameters)) 313 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 314} 315 316// GetSender sends the Get request. The method will close the 317// http.Response Body if it receives an error. 318func (client PoliciesClient) GetSender(req *http.Request) (*http.Response, error) { 319 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 320} 321 322// GetResponder handles the response to the Get request. The method always 323// closes the http.Response Body. 324func (client PoliciesClient) GetResponder(resp *http.Response) (result WebApplicationFirewallPolicy, err error) { 325 err = autorest.Respond( 326 resp, 327 azure.WithErrorUnlessStatusCode(http.StatusOK), 328 autorest.ByUnmarshallingJSON(&result), 329 autorest.ByClosing()) 330 result.Response = autorest.Response{Response: resp} 331 return 332} 333 334// List lists all of the protection policies within a resource group. 335// Parameters: 336// resourceGroupName - name of the Resource group within the Azure subscription. 337func (client PoliciesClient) List(ctx context.Context, resourceGroupName string) (result WebApplicationFirewallPolicyListPage, err error) { 338 if tracing.IsEnabled() { 339 ctx = tracing.StartSpan(ctx, fqdn+"/PoliciesClient.List") 340 defer func() { 341 sc := -1 342 if result.wafpl.Response.Response != nil { 343 sc = result.wafpl.Response.Response.StatusCode 344 } 345 tracing.EndSpan(ctx, sc, err) 346 }() 347 } 348 if err := validation.Validate([]validation.Validation{ 349 {TargetValue: resourceGroupName, 350 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 80, Chain: nil}, 351 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 352 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9_\-\(\)\.]*[^\.]$`, Chain: nil}}}}); err != nil { 353 return result, validation.NewError("cdn.PoliciesClient", "List", err.Error()) 354 } 355 356 result.fn = client.listNextResults 357 req, err := client.ListPreparer(ctx, resourceGroupName) 358 if err != nil { 359 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "List", nil, "Failure preparing request") 360 return 361 } 362 363 resp, err := client.ListSender(req) 364 if err != nil { 365 result.wafpl.Response = autorest.Response{Response: resp} 366 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "List", resp, "Failure sending request") 367 return 368 } 369 370 result.wafpl, err = client.ListResponder(resp) 371 if err != nil { 372 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "List", resp, "Failure responding to request") 373 return 374 } 375 if result.wafpl.hasNextLink() && result.wafpl.IsEmpty() { 376 err = result.NextWithContext(ctx) 377 return 378 } 379 380 return 381} 382 383// ListPreparer prepares the List request. 384func (client PoliciesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { 385 pathParameters := map[string]interface{}{ 386 "resourceGroupName": autorest.Encode("path", resourceGroupName), 387 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 388 } 389 390 const APIVersion = "2020-09-01" 391 queryParameters := map[string]interface{}{ 392 "api-version": APIVersion, 393 } 394 395 preparer := autorest.CreatePreparer( 396 autorest.AsGet(), 397 autorest.WithBaseURL(client.BaseURI), 398 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies", pathParameters), 399 autorest.WithQueryParameters(queryParameters)) 400 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 401} 402 403// ListSender sends the List request. The method will close the 404// http.Response Body if it receives an error. 405func (client PoliciesClient) ListSender(req *http.Request) (*http.Response, error) { 406 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 407} 408 409// ListResponder handles the response to the List request. The method always 410// closes the http.Response Body. 411func (client PoliciesClient) ListResponder(resp *http.Response) (result WebApplicationFirewallPolicyList, err error) { 412 err = autorest.Respond( 413 resp, 414 azure.WithErrorUnlessStatusCode(http.StatusOK), 415 autorest.ByUnmarshallingJSON(&result), 416 autorest.ByClosing()) 417 result.Response = autorest.Response{Response: resp} 418 return 419} 420 421// listNextResults retrieves the next set of results, if any. 422func (client PoliciesClient) listNextResults(ctx context.Context, lastResults WebApplicationFirewallPolicyList) (result WebApplicationFirewallPolicyList, err error) { 423 req, err := lastResults.webApplicationFirewallPolicyListPreparer(ctx) 424 if err != nil { 425 return result, autorest.NewErrorWithError(err, "cdn.PoliciesClient", "listNextResults", nil, "Failure preparing next results request") 426 } 427 if req == nil { 428 return 429 } 430 resp, err := client.ListSender(req) 431 if err != nil { 432 result.Response = autorest.Response{Response: resp} 433 return result, autorest.NewErrorWithError(err, "cdn.PoliciesClient", "listNextResults", resp, "Failure sending next results request") 434 } 435 result, err = client.ListResponder(resp) 436 if err != nil { 437 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "listNextResults", resp, "Failure responding to next results request") 438 } 439 return 440} 441 442// ListComplete enumerates all values, automatically crossing page boundaries as required. 443func (client PoliciesClient) ListComplete(ctx context.Context, resourceGroupName string) (result WebApplicationFirewallPolicyListIterator, err error) { 444 if tracing.IsEnabled() { 445 ctx = tracing.StartSpan(ctx, fqdn+"/PoliciesClient.List") 446 defer func() { 447 sc := -1 448 if result.Response().Response.Response != nil { 449 sc = result.page.Response().Response.Response.StatusCode 450 } 451 tracing.EndSpan(ctx, sc, err) 452 }() 453 } 454 result.page, err = client.List(ctx, resourceGroupName) 455 return 456} 457 458// Update update an existing CdnWebApplicationFirewallPolicy with the specified policy name under the specified 459// subscription and resource group 460// Parameters: 461// resourceGroupName - name of the Resource group within the Azure subscription. 462// policyName - the name of the CdnWebApplicationFirewallPolicy. 463// cdnWebApplicationFirewallPolicyPatchParameters - cdnWebApplicationFirewallPolicy parameters to be patched. 464func (client PoliciesClient) Update(ctx context.Context, resourceGroupName string, policyName string, cdnWebApplicationFirewallPolicyPatchParameters WebApplicationFirewallPolicyPatchParameters) (result PoliciesUpdateFuture, err error) { 465 if tracing.IsEnabled() { 466 ctx = tracing.StartSpan(ctx, fqdn+"/PoliciesClient.Update") 467 defer func() { 468 sc := -1 469 if result.Response() != nil { 470 sc = result.Response().StatusCode 471 } 472 tracing.EndSpan(ctx, sc, err) 473 }() 474 } 475 if err := validation.Validate([]validation.Validation{ 476 {TargetValue: resourceGroupName, 477 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 80, Chain: nil}, 478 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 479 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9_\-\(\)\.]*[^\.]$`, Chain: nil}}}, 480 {TargetValue: policyName, 481 Constraints: []validation.Constraint{{Target: "policyName", Name: validation.MaxLength, Rule: 128, Chain: nil}}}}); err != nil { 482 return result, validation.NewError("cdn.PoliciesClient", "Update", err.Error()) 483 } 484 485 req, err := client.UpdatePreparer(ctx, resourceGroupName, policyName, cdnWebApplicationFirewallPolicyPatchParameters) 486 if err != nil { 487 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "Update", nil, "Failure preparing request") 488 return 489 } 490 491 result, err = client.UpdateSender(req) 492 if err != nil { 493 err = autorest.NewErrorWithError(err, "cdn.PoliciesClient", "Update", nil, "Failure sending request") 494 return 495 } 496 497 return 498} 499 500// UpdatePreparer prepares the Update request. 501func (client PoliciesClient) UpdatePreparer(ctx context.Context, resourceGroupName string, policyName string, cdnWebApplicationFirewallPolicyPatchParameters WebApplicationFirewallPolicyPatchParameters) (*http.Request, error) { 502 pathParameters := map[string]interface{}{ 503 "policyName": autorest.Encode("path", policyName), 504 "resourceGroupName": autorest.Encode("path", resourceGroupName), 505 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 506 } 507 508 const APIVersion = "2020-09-01" 509 queryParameters := map[string]interface{}{ 510 "api-version": APIVersion, 511 } 512 513 preparer := autorest.CreatePreparer( 514 autorest.AsContentType("application/json; charset=utf-8"), 515 autorest.AsPatch(), 516 autorest.WithBaseURL(client.BaseURI), 517 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies/{policyName}", pathParameters), 518 autorest.WithJSON(cdnWebApplicationFirewallPolicyPatchParameters), 519 autorest.WithQueryParameters(queryParameters)) 520 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 521} 522 523// UpdateSender sends the Update request. The method will close the 524// http.Response Body if it receives an error. 525func (client PoliciesClient) UpdateSender(req *http.Request) (future PoliciesUpdateFuture, err error) { 526 var resp *http.Response 527 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 528 if err != nil { 529 return 530 } 531 var azf azure.Future 532 azf, err = azure.NewFutureFromResponse(resp) 533 future.FutureAPI = &azf 534 future.Result = func(client PoliciesClient) (wafp WebApplicationFirewallPolicy, err error) { 535 var done bool 536 done, err = future.DoneWithContext(context.Background(), client) 537 if err != nil { 538 err = autorest.NewErrorWithError(err, "cdn.PoliciesUpdateFuture", "Result", future.Response(), "Polling failure") 539 return 540 } 541 if !done { 542 err = azure.NewAsyncOpIncompleteError("cdn.PoliciesUpdateFuture") 543 return 544 } 545 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 546 if wafp.Response.Response, err = future.GetResult(sender); err == nil && wafp.Response.Response.StatusCode != http.StatusNoContent { 547 wafp, err = client.UpdateResponder(wafp.Response.Response) 548 if err != nil { 549 err = autorest.NewErrorWithError(err, "cdn.PoliciesUpdateFuture", "Result", wafp.Response.Response, "Failure responding to request") 550 } 551 } 552 return 553 } 554 return 555} 556 557// UpdateResponder handles the response to the Update request. The method always 558// closes the http.Response Body. 559func (client PoliciesClient) UpdateResponder(resp *http.Response) (result WebApplicationFirewallPolicy, err error) { 560 err = autorest.Respond( 561 resp, 562 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 563 autorest.ByUnmarshallingJSON(&result), 564 autorest.ByClosing()) 565 result.Response = autorest.Response{Response: resp} 566 return 567} 568