github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6@v6.2.0/webapplicationfirewallpolicies_client.go (about) 1 //go:build go1.18 2 // +build go1.18 3 4 // Copyright (c) Microsoft Corporation. All rights reserved. 5 // Licensed under the MIT License. See License.txt in the project root for license information. 6 // Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. 7 // Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9 package armnetwork 10 11 import ( 12 "context" 13 "errors" 14 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 15 "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" 16 "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" 17 "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" 18 "net/http" 19 "net/url" 20 "strings" 21 ) 22 23 // WebApplicationFirewallPoliciesClient contains the methods for the WebApplicationFirewallPolicies group. 24 // Don't use this type directly, use NewWebApplicationFirewallPoliciesClient() instead. 25 type WebApplicationFirewallPoliciesClient struct { 26 internal *arm.Client 27 subscriptionID string 28 } 29 30 // NewWebApplicationFirewallPoliciesClient creates a new instance of WebApplicationFirewallPoliciesClient with the specified values. 31 // - subscriptionID - The subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription 32 // ID forms part of the URI for every service call. 33 // - credential - used to authorize requests. Usually a credential from azidentity. 34 // - options - pass nil to accept the default values. 35 func NewWebApplicationFirewallPoliciesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*WebApplicationFirewallPoliciesClient, error) { 36 cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) 37 if err != nil { 38 return nil, err 39 } 40 client := &WebApplicationFirewallPoliciesClient{ 41 subscriptionID: subscriptionID, 42 internal: cl, 43 } 44 return client, nil 45 } 46 47 // CreateOrUpdate - Creates or update policy with specified rule set name within a resource group. 48 // If the operation fails it returns an *azcore.ResponseError type. 49 // 50 // Generated from API version 2024-05-01 51 // - resourceGroupName - The name of the resource group. 52 // - policyName - The name of the policy. 53 // - parameters - Policy to be created. 54 // - options - WebApplicationFirewallPoliciesClientCreateOrUpdateOptions contains the optional parameters for the WebApplicationFirewallPoliciesClient.CreateOrUpdate 55 // method. 56 func (client *WebApplicationFirewallPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, policyName string, parameters WebApplicationFirewallPolicy, options *WebApplicationFirewallPoliciesClientCreateOrUpdateOptions) (WebApplicationFirewallPoliciesClientCreateOrUpdateResponse, error) { 57 var err error 58 const operationName = "WebApplicationFirewallPoliciesClient.CreateOrUpdate" 59 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 60 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 61 defer func() { endSpan(err) }() 62 req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, policyName, parameters, options) 63 if err != nil { 64 return WebApplicationFirewallPoliciesClientCreateOrUpdateResponse{}, err 65 } 66 httpResp, err := client.internal.Pipeline().Do(req) 67 if err != nil { 68 return WebApplicationFirewallPoliciesClientCreateOrUpdateResponse{}, err 69 } 70 if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { 71 err = runtime.NewResponseError(httpResp) 72 return WebApplicationFirewallPoliciesClientCreateOrUpdateResponse{}, err 73 } 74 resp, err := client.createOrUpdateHandleResponse(httpResp) 75 return resp, err 76 } 77 78 // createOrUpdateCreateRequest creates the CreateOrUpdate request. 79 func (client *WebApplicationFirewallPoliciesClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, policyName string, parameters WebApplicationFirewallPolicy, options *WebApplicationFirewallPoliciesClientCreateOrUpdateOptions) (*policy.Request, error) { 80 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}" 81 if resourceGroupName == "" { 82 return nil, errors.New("parameter resourceGroupName cannot be empty") 83 } 84 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 85 if policyName == "" { 86 return nil, errors.New("parameter policyName cannot be empty") 87 } 88 urlPath = strings.ReplaceAll(urlPath, "{policyName}", url.PathEscape(policyName)) 89 if client.subscriptionID == "" { 90 return nil, errors.New("parameter client.subscriptionID cannot be empty") 91 } 92 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 93 req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 94 if err != nil { 95 return nil, err 96 } 97 reqQP := req.Raw().URL.Query() 98 reqQP.Set("api-version", "2024-05-01") 99 req.Raw().URL.RawQuery = reqQP.Encode() 100 req.Raw().Header["Accept"] = []string{"application/json"} 101 if err := runtime.MarshalAsJSON(req, parameters); err != nil { 102 return nil, err 103 } 104 return req, nil 105 } 106 107 // createOrUpdateHandleResponse handles the CreateOrUpdate response. 108 func (client *WebApplicationFirewallPoliciesClient) createOrUpdateHandleResponse(resp *http.Response) (WebApplicationFirewallPoliciesClientCreateOrUpdateResponse, error) { 109 result := WebApplicationFirewallPoliciesClientCreateOrUpdateResponse{} 110 if err := runtime.UnmarshalAsJSON(resp, &result.WebApplicationFirewallPolicy); err != nil { 111 return WebApplicationFirewallPoliciesClientCreateOrUpdateResponse{}, err 112 } 113 return result, nil 114 } 115 116 // BeginDelete - Deletes Policy. 117 // If the operation fails it returns an *azcore.ResponseError type. 118 // 119 // Generated from API version 2024-05-01 120 // - resourceGroupName - The name of the resource group. 121 // - policyName - The name of the policy. 122 // - options - WebApplicationFirewallPoliciesClientBeginDeleteOptions contains the optional parameters for the WebApplicationFirewallPoliciesClient.BeginDelete 123 // method. 124 func (client *WebApplicationFirewallPoliciesClient) BeginDelete(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesClientBeginDeleteOptions) (*runtime.Poller[WebApplicationFirewallPoliciesClientDeleteResponse], error) { 125 if options == nil || options.ResumeToken == "" { 126 resp, err := client.deleteOperation(ctx, resourceGroupName, policyName, options) 127 if err != nil { 128 return nil, err 129 } 130 poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[WebApplicationFirewallPoliciesClientDeleteResponse]{ 131 FinalStateVia: runtime.FinalStateViaLocation, 132 Tracer: client.internal.Tracer(), 133 }) 134 return poller, err 135 } else { 136 return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[WebApplicationFirewallPoliciesClientDeleteResponse]{ 137 Tracer: client.internal.Tracer(), 138 }) 139 } 140 } 141 142 // Delete - Deletes Policy. 143 // If the operation fails it returns an *azcore.ResponseError type. 144 // 145 // Generated from API version 2024-05-01 146 func (client *WebApplicationFirewallPoliciesClient) deleteOperation(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesClientBeginDeleteOptions) (*http.Response, error) { 147 var err error 148 const operationName = "WebApplicationFirewallPoliciesClient.BeginDelete" 149 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 150 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 151 defer func() { endSpan(err) }() 152 req, err := client.deleteCreateRequest(ctx, resourceGroupName, policyName, options) 153 if err != nil { 154 return nil, err 155 } 156 httpResp, err := client.internal.Pipeline().Do(req) 157 if err != nil { 158 return nil, err 159 } 160 if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { 161 err = runtime.NewResponseError(httpResp) 162 return nil, err 163 } 164 return httpResp, nil 165 } 166 167 // deleteCreateRequest creates the Delete request. 168 func (client *WebApplicationFirewallPoliciesClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesClientBeginDeleteOptions) (*policy.Request, error) { 169 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}" 170 if resourceGroupName == "" { 171 return nil, errors.New("parameter resourceGroupName cannot be empty") 172 } 173 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 174 if policyName == "" { 175 return nil, errors.New("parameter policyName cannot be empty") 176 } 177 urlPath = strings.ReplaceAll(urlPath, "{policyName}", url.PathEscape(policyName)) 178 if client.subscriptionID == "" { 179 return nil, errors.New("parameter client.subscriptionID cannot be empty") 180 } 181 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 182 req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 183 if err != nil { 184 return nil, err 185 } 186 reqQP := req.Raw().URL.Query() 187 reqQP.Set("api-version", "2024-05-01") 188 req.Raw().URL.RawQuery = reqQP.Encode() 189 req.Raw().Header["Accept"] = []string{"application/json"} 190 return req, nil 191 } 192 193 // Get - Retrieve protection policy with specified name within a resource group. 194 // If the operation fails it returns an *azcore.ResponseError type. 195 // 196 // Generated from API version 2024-05-01 197 // - resourceGroupName - The name of the resource group. 198 // - policyName - The name of the policy. 199 // - options - WebApplicationFirewallPoliciesClientGetOptions contains the optional parameters for the WebApplicationFirewallPoliciesClient.Get 200 // method. 201 func (client *WebApplicationFirewallPoliciesClient) Get(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesClientGetOptions) (WebApplicationFirewallPoliciesClientGetResponse, error) { 202 var err error 203 const operationName = "WebApplicationFirewallPoliciesClient.Get" 204 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 205 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 206 defer func() { endSpan(err) }() 207 req, err := client.getCreateRequest(ctx, resourceGroupName, policyName, options) 208 if err != nil { 209 return WebApplicationFirewallPoliciesClientGetResponse{}, err 210 } 211 httpResp, err := client.internal.Pipeline().Do(req) 212 if err != nil { 213 return WebApplicationFirewallPoliciesClientGetResponse{}, err 214 } 215 if !runtime.HasStatusCode(httpResp, http.StatusOK) { 216 err = runtime.NewResponseError(httpResp) 217 return WebApplicationFirewallPoliciesClientGetResponse{}, err 218 } 219 resp, err := client.getHandleResponse(httpResp) 220 return resp, err 221 } 222 223 // getCreateRequest creates the Get request. 224 func (client *WebApplicationFirewallPoliciesClient) getCreateRequest(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesClientGetOptions) (*policy.Request, error) { 225 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}" 226 if resourceGroupName == "" { 227 return nil, errors.New("parameter resourceGroupName cannot be empty") 228 } 229 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 230 if policyName == "" { 231 return nil, errors.New("parameter policyName cannot be empty") 232 } 233 urlPath = strings.ReplaceAll(urlPath, "{policyName}", url.PathEscape(policyName)) 234 if client.subscriptionID == "" { 235 return nil, errors.New("parameter client.subscriptionID cannot be empty") 236 } 237 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 238 req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 239 if err != nil { 240 return nil, err 241 } 242 reqQP := req.Raw().URL.Query() 243 reqQP.Set("api-version", "2024-05-01") 244 req.Raw().URL.RawQuery = reqQP.Encode() 245 req.Raw().Header["Accept"] = []string{"application/json"} 246 return req, nil 247 } 248 249 // getHandleResponse handles the Get response. 250 func (client *WebApplicationFirewallPoliciesClient) getHandleResponse(resp *http.Response) (WebApplicationFirewallPoliciesClientGetResponse, error) { 251 result := WebApplicationFirewallPoliciesClientGetResponse{} 252 if err := runtime.UnmarshalAsJSON(resp, &result.WebApplicationFirewallPolicy); err != nil { 253 return WebApplicationFirewallPoliciesClientGetResponse{}, err 254 } 255 return result, nil 256 } 257 258 // NewListPager - Lists all of the protection policies within a resource group. 259 // 260 // Generated from API version 2024-05-01 261 // - resourceGroupName - The name of the resource group. 262 // - options - WebApplicationFirewallPoliciesClientListOptions contains the optional parameters for the WebApplicationFirewallPoliciesClient.NewListPager 263 // method. 264 func (client *WebApplicationFirewallPoliciesClient) NewListPager(resourceGroupName string, options *WebApplicationFirewallPoliciesClientListOptions) *runtime.Pager[WebApplicationFirewallPoliciesClientListResponse] { 265 return runtime.NewPager(runtime.PagingHandler[WebApplicationFirewallPoliciesClientListResponse]{ 266 More: func(page WebApplicationFirewallPoliciesClientListResponse) bool { 267 return page.NextLink != nil && len(*page.NextLink) > 0 268 }, 269 Fetcher: func(ctx context.Context, page *WebApplicationFirewallPoliciesClientListResponse) (WebApplicationFirewallPoliciesClientListResponse, error) { 270 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "WebApplicationFirewallPoliciesClient.NewListPager") 271 nextLink := "" 272 if page != nil { 273 nextLink = *page.NextLink 274 } 275 resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { 276 return client.listCreateRequest(ctx, resourceGroupName, options) 277 }, nil) 278 if err != nil { 279 return WebApplicationFirewallPoliciesClientListResponse{}, err 280 } 281 return client.listHandleResponse(resp) 282 }, 283 Tracer: client.internal.Tracer(), 284 }) 285 } 286 287 // listCreateRequest creates the List request. 288 func (client *WebApplicationFirewallPoliciesClient) listCreateRequest(ctx context.Context, resourceGroupName string, options *WebApplicationFirewallPoliciesClientListOptions) (*policy.Request, error) { 289 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies" 290 if resourceGroupName == "" { 291 return nil, errors.New("parameter resourceGroupName cannot be empty") 292 } 293 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 294 if client.subscriptionID == "" { 295 return nil, errors.New("parameter client.subscriptionID cannot be empty") 296 } 297 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 298 req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 299 if err != nil { 300 return nil, err 301 } 302 reqQP := req.Raw().URL.Query() 303 reqQP.Set("api-version", "2024-05-01") 304 req.Raw().URL.RawQuery = reqQP.Encode() 305 req.Raw().Header["Accept"] = []string{"application/json"} 306 return req, nil 307 } 308 309 // listHandleResponse handles the List response. 310 func (client *WebApplicationFirewallPoliciesClient) listHandleResponse(resp *http.Response) (WebApplicationFirewallPoliciesClientListResponse, error) { 311 result := WebApplicationFirewallPoliciesClientListResponse{} 312 if err := runtime.UnmarshalAsJSON(resp, &result.WebApplicationFirewallPolicyListResult); err != nil { 313 return WebApplicationFirewallPoliciesClientListResponse{}, err 314 } 315 return result, nil 316 } 317 318 // NewListAllPager - Gets all the WAF policies in a subscription. 319 // 320 // Generated from API version 2024-05-01 321 // - options - WebApplicationFirewallPoliciesClientListAllOptions contains the optional parameters for the WebApplicationFirewallPoliciesClient.NewListAllPager 322 // method. 323 func (client *WebApplicationFirewallPoliciesClient) NewListAllPager(options *WebApplicationFirewallPoliciesClientListAllOptions) *runtime.Pager[WebApplicationFirewallPoliciesClientListAllResponse] { 324 return runtime.NewPager(runtime.PagingHandler[WebApplicationFirewallPoliciesClientListAllResponse]{ 325 More: func(page WebApplicationFirewallPoliciesClientListAllResponse) bool { 326 return page.NextLink != nil && len(*page.NextLink) > 0 327 }, 328 Fetcher: func(ctx context.Context, page *WebApplicationFirewallPoliciesClientListAllResponse) (WebApplicationFirewallPoliciesClientListAllResponse, error) { 329 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "WebApplicationFirewallPoliciesClient.NewListAllPager") 330 nextLink := "" 331 if page != nil { 332 nextLink = *page.NextLink 333 } 334 resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { 335 return client.listAllCreateRequest(ctx, options) 336 }, nil) 337 if err != nil { 338 return WebApplicationFirewallPoliciesClientListAllResponse{}, err 339 } 340 return client.listAllHandleResponse(resp) 341 }, 342 Tracer: client.internal.Tracer(), 343 }) 344 } 345 346 // listAllCreateRequest creates the ListAll request. 347 func (client *WebApplicationFirewallPoliciesClient) listAllCreateRequest(ctx context.Context, options *WebApplicationFirewallPoliciesClientListAllOptions) (*policy.Request, error) { 348 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies" 349 if client.subscriptionID == "" { 350 return nil, errors.New("parameter client.subscriptionID cannot be empty") 351 } 352 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 353 req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 354 if err != nil { 355 return nil, err 356 } 357 reqQP := req.Raw().URL.Query() 358 reqQP.Set("api-version", "2024-05-01") 359 req.Raw().URL.RawQuery = reqQP.Encode() 360 req.Raw().Header["Accept"] = []string{"application/json"} 361 return req, nil 362 } 363 364 // listAllHandleResponse handles the ListAll response. 365 func (client *WebApplicationFirewallPoliciesClient) listAllHandleResponse(resp *http.Response) (WebApplicationFirewallPoliciesClientListAllResponse, error) { 366 result := WebApplicationFirewallPoliciesClientListAllResponse{} 367 if err := runtime.UnmarshalAsJSON(resp, &result.WebApplicationFirewallPolicyListResult); err != nil { 368 return WebApplicationFirewallPoliciesClientListAllResponse{}, err 369 } 370 return result, nil 371 }