1// +build go1.13 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// Code generated by Microsoft (R) AutoRest Code Generator. 6// Changes may cause incorrect behavior and will be lost if the code is regenerated. 7 8package armnetwork 9 10import ( 11 "context" 12 "github.com/Azure/azure-sdk-for-go/sdk/armcore" 13 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 14 "net/http" 15 "net/url" 16 "strings" 17 "time" 18) 19 20// WebApplicationFirewallPoliciesClient contains the methods for the WebApplicationFirewallPolicies group. 21// Don't use this type directly, use NewWebApplicationFirewallPoliciesClient() instead. 22type WebApplicationFirewallPoliciesClient struct { 23 con *armcore.Connection 24 subscriptionID string 25} 26 27// NewWebApplicationFirewallPoliciesClient creates a new instance of WebApplicationFirewallPoliciesClient with the specified values. 28func NewWebApplicationFirewallPoliciesClient(con *armcore.Connection, subscriptionID string) *WebApplicationFirewallPoliciesClient { 29 return &WebApplicationFirewallPoliciesClient{con: con, subscriptionID: subscriptionID} 30} 31 32// CreateOrUpdate - Creates or update policy with specified rule set name within a resource group. 33func (client *WebApplicationFirewallPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, policyName string, parameters WebApplicationFirewallPolicy, options *WebApplicationFirewallPoliciesCreateOrUpdateOptions) (WebApplicationFirewallPolicyResponse, error) { 34 req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, policyName, parameters, options) 35 if err != nil { 36 return WebApplicationFirewallPolicyResponse{}, err 37 } 38 resp, err := client.con.Pipeline().Do(req) 39 if err != nil { 40 return WebApplicationFirewallPolicyResponse{}, err 41 } 42 if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) { 43 return WebApplicationFirewallPolicyResponse{}, client.createOrUpdateHandleError(resp) 44 } 45 return client.createOrUpdateHandleResponse(resp) 46} 47 48// createOrUpdateCreateRequest creates the CreateOrUpdate request. 49func (client *WebApplicationFirewallPoliciesClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, policyName string, parameters WebApplicationFirewallPolicy, options *WebApplicationFirewallPoliciesCreateOrUpdateOptions) (*azcore.Request, error) { 50 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}" 51 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 52 urlPath = strings.ReplaceAll(urlPath, "{policyName}", url.PathEscape(policyName)) 53 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 54 req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 55 if err != nil { 56 return nil, err 57 } 58 req.Telemetry(telemetryInfo) 59 query := req.URL.Query() 60 query.Set("api-version", "2020-07-01") 61 req.URL.RawQuery = query.Encode() 62 req.Header.Set("Accept", "application/json") 63 return req, req.MarshalAsJSON(parameters) 64} 65 66// createOrUpdateHandleResponse handles the CreateOrUpdate response. 67func (client *WebApplicationFirewallPoliciesClient) createOrUpdateHandleResponse(resp *azcore.Response) (WebApplicationFirewallPolicyResponse, error) { 68 var val *WebApplicationFirewallPolicy 69 if err := resp.UnmarshalAsJSON(&val); err != nil { 70 return WebApplicationFirewallPolicyResponse{}, err 71 } 72 return WebApplicationFirewallPolicyResponse{RawResponse: resp.Response, WebApplicationFirewallPolicy: val}, nil 73} 74 75// createOrUpdateHandleError handles the CreateOrUpdate error response. 76func (client *WebApplicationFirewallPoliciesClient) createOrUpdateHandleError(resp *azcore.Response) error { 77 var err CloudError 78 if err := resp.UnmarshalAsJSON(&err); err != nil { 79 return err 80 } 81 return azcore.NewResponseError(&err, resp.Response) 82} 83 84// BeginDelete - Deletes Policy. 85func (client *WebApplicationFirewallPoliciesClient) BeginDelete(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesBeginDeleteOptions) (HTTPPollerResponse, error) { 86 resp, err := client.delete(ctx, resourceGroupName, policyName, options) 87 if err != nil { 88 return HTTPPollerResponse{}, err 89 } 90 result := HTTPPollerResponse{ 91 RawResponse: resp.Response, 92 } 93 pt, err := armcore.NewPoller("WebApplicationFirewallPoliciesClient.Delete", "location", resp, client.deleteHandleError) 94 if err != nil { 95 return HTTPPollerResponse{}, err 96 } 97 poller := &httpPoller{ 98 pt: pt, 99 pipeline: client.con.Pipeline(), 100 } 101 result.Poller = poller 102 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) { 103 return poller.pollUntilDone(ctx, frequency) 104 } 105 return result, nil 106} 107 108// ResumeDelete creates a new HTTPPoller from the specified resume token. 109// token - The value must come from a previous call to HTTPPoller.ResumeToken(). 110func (client *WebApplicationFirewallPoliciesClient) ResumeDelete(token string) (HTTPPoller, error) { 111 pt, err := armcore.NewPollerFromResumeToken("WebApplicationFirewallPoliciesClient.Delete", token, client.deleteHandleError) 112 if err != nil { 113 return nil, err 114 } 115 return &httpPoller{ 116 pipeline: client.con.Pipeline(), 117 pt: pt, 118 }, nil 119} 120 121// Delete - Deletes Policy. 122func (client *WebApplicationFirewallPoliciesClient) delete(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesBeginDeleteOptions) (*azcore.Response, error) { 123 req, err := client.deleteCreateRequest(ctx, resourceGroupName, policyName, options) 124 if err != nil { 125 return nil, err 126 } 127 resp, err := client.con.Pipeline().Do(req) 128 if err != nil { 129 return nil, err 130 } 131 if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent) { 132 return nil, client.deleteHandleError(resp) 133 } 134 return resp, nil 135} 136 137// deleteCreateRequest creates the Delete request. 138func (client *WebApplicationFirewallPoliciesClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesBeginDeleteOptions) (*azcore.Request, error) { 139 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}" 140 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 141 urlPath = strings.ReplaceAll(urlPath, "{policyName}", url.PathEscape(policyName)) 142 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 143 req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 144 if err != nil { 145 return nil, err 146 } 147 req.Telemetry(telemetryInfo) 148 query := req.URL.Query() 149 query.Set("api-version", "2020-07-01") 150 req.URL.RawQuery = query.Encode() 151 req.Header.Set("Accept", "application/json") 152 return req, nil 153} 154 155// deleteHandleError handles the Delete error response. 156func (client *WebApplicationFirewallPoliciesClient) deleteHandleError(resp *azcore.Response) error { 157 var err CloudError 158 if err := resp.UnmarshalAsJSON(&err); err != nil { 159 return err 160 } 161 return azcore.NewResponseError(&err, resp.Response) 162} 163 164// Get - Retrieve protection policy with specified name within a resource group. 165func (client *WebApplicationFirewallPoliciesClient) Get(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesGetOptions) (WebApplicationFirewallPolicyResponse, error) { 166 req, err := client.getCreateRequest(ctx, resourceGroupName, policyName, options) 167 if err != nil { 168 return WebApplicationFirewallPolicyResponse{}, err 169 } 170 resp, err := client.con.Pipeline().Do(req) 171 if err != nil { 172 return WebApplicationFirewallPolicyResponse{}, err 173 } 174 if !resp.HasStatusCode(http.StatusOK) { 175 return WebApplicationFirewallPolicyResponse{}, client.getHandleError(resp) 176 } 177 return client.getHandleResponse(resp) 178} 179 180// getCreateRequest creates the Get request. 181func (client *WebApplicationFirewallPoliciesClient) getCreateRequest(ctx context.Context, resourceGroupName string, policyName string, options *WebApplicationFirewallPoliciesGetOptions) (*azcore.Request, error) { 182 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}" 183 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 184 urlPath = strings.ReplaceAll(urlPath, "{policyName}", url.PathEscape(policyName)) 185 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 186 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 187 if err != nil { 188 return nil, err 189 } 190 req.Telemetry(telemetryInfo) 191 query := req.URL.Query() 192 query.Set("api-version", "2020-07-01") 193 req.URL.RawQuery = query.Encode() 194 req.Header.Set("Accept", "application/json") 195 return req, nil 196} 197 198// getHandleResponse handles the Get response. 199func (client *WebApplicationFirewallPoliciesClient) getHandleResponse(resp *azcore.Response) (WebApplicationFirewallPolicyResponse, error) { 200 var val *WebApplicationFirewallPolicy 201 if err := resp.UnmarshalAsJSON(&val); err != nil { 202 return WebApplicationFirewallPolicyResponse{}, err 203 } 204 return WebApplicationFirewallPolicyResponse{RawResponse: resp.Response, WebApplicationFirewallPolicy: val}, nil 205} 206 207// getHandleError handles the Get error response. 208func (client *WebApplicationFirewallPoliciesClient) getHandleError(resp *azcore.Response) error { 209 var err CloudError 210 if err := resp.UnmarshalAsJSON(&err); err != nil { 211 return err 212 } 213 return azcore.NewResponseError(&err, resp.Response) 214} 215 216// List - Lists all of the protection policies within a resource group. 217func (client *WebApplicationFirewallPoliciesClient) List(resourceGroupName string, options *WebApplicationFirewallPoliciesListOptions) WebApplicationFirewallPolicyListResultPager { 218 return &webApplicationFirewallPolicyListResultPager{ 219 pipeline: client.con.Pipeline(), 220 requester: func(ctx context.Context) (*azcore.Request, error) { 221 return client.listCreateRequest(ctx, resourceGroupName, options) 222 }, 223 responder: client.listHandleResponse, 224 errorer: client.listHandleError, 225 advancer: func(ctx context.Context, resp WebApplicationFirewallPolicyListResultResponse) (*azcore.Request, error) { 226 return azcore.NewRequest(ctx, http.MethodGet, *resp.WebApplicationFirewallPolicyListResult.NextLink) 227 }, 228 statusCodes: []int{http.StatusOK}, 229 } 230} 231 232// listCreateRequest creates the List request. 233func (client *WebApplicationFirewallPoliciesClient) listCreateRequest(ctx context.Context, resourceGroupName string, options *WebApplicationFirewallPoliciesListOptions) (*azcore.Request, error) { 234 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies" 235 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 236 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 237 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 238 if err != nil { 239 return nil, err 240 } 241 req.Telemetry(telemetryInfo) 242 query := req.URL.Query() 243 query.Set("api-version", "2020-07-01") 244 req.URL.RawQuery = query.Encode() 245 req.Header.Set("Accept", "application/json") 246 return req, nil 247} 248 249// listHandleResponse handles the List response. 250func (client *WebApplicationFirewallPoliciesClient) listHandleResponse(resp *azcore.Response) (WebApplicationFirewallPolicyListResultResponse, error) { 251 var val *WebApplicationFirewallPolicyListResult 252 if err := resp.UnmarshalAsJSON(&val); err != nil { 253 return WebApplicationFirewallPolicyListResultResponse{}, err 254 } 255 return WebApplicationFirewallPolicyListResultResponse{RawResponse: resp.Response, WebApplicationFirewallPolicyListResult: val}, nil 256} 257 258// listHandleError handles the List error response. 259func (client *WebApplicationFirewallPoliciesClient) listHandleError(resp *azcore.Response) error { 260 var err CloudError 261 if err := resp.UnmarshalAsJSON(&err); err != nil { 262 return err 263 } 264 return azcore.NewResponseError(&err, resp.Response) 265} 266 267// ListAll - Gets all the WAF policies in a subscription. 268func (client *WebApplicationFirewallPoliciesClient) ListAll(options *WebApplicationFirewallPoliciesListAllOptions) WebApplicationFirewallPolicyListResultPager { 269 return &webApplicationFirewallPolicyListResultPager{ 270 pipeline: client.con.Pipeline(), 271 requester: func(ctx context.Context) (*azcore.Request, error) { 272 return client.listAllCreateRequest(ctx, options) 273 }, 274 responder: client.listAllHandleResponse, 275 errorer: client.listAllHandleError, 276 advancer: func(ctx context.Context, resp WebApplicationFirewallPolicyListResultResponse) (*azcore.Request, error) { 277 return azcore.NewRequest(ctx, http.MethodGet, *resp.WebApplicationFirewallPolicyListResult.NextLink) 278 }, 279 statusCodes: []int{http.StatusOK}, 280 } 281} 282 283// listAllCreateRequest creates the ListAll request. 284func (client *WebApplicationFirewallPoliciesClient) listAllCreateRequest(ctx context.Context, options *WebApplicationFirewallPoliciesListAllOptions) (*azcore.Request, error) { 285 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies" 286 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 287 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 288 if err != nil { 289 return nil, err 290 } 291 req.Telemetry(telemetryInfo) 292 query := req.URL.Query() 293 query.Set("api-version", "2020-07-01") 294 req.URL.RawQuery = query.Encode() 295 req.Header.Set("Accept", "application/json") 296 return req, nil 297} 298 299// listAllHandleResponse handles the ListAll response. 300func (client *WebApplicationFirewallPoliciesClient) listAllHandleResponse(resp *azcore.Response) (WebApplicationFirewallPolicyListResultResponse, error) { 301 var val *WebApplicationFirewallPolicyListResult 302 if err := resp.UnmarshalAsJSON(&val); err != nil { 303 return WebApplicationFirewallPolicyListResultResponse{}, err 304 } 305 return WebApplicationFirewallPolicyListResultResponse{RawResponse: resp.Response, WebApplicationFirewallPolicyListResult: val}, nil 306} 307 308// listAllHandleError handles the ListAll error response. 309func (client *WebApplicationFirewallPoliciesClient) listAllHandleError(resp *azcore.Response) error { 310 var err CloudError 311 if err := resp.UnmarshalAsJSON(&err); err != nil { 312 return err 313 } 314 return azcore.NewResponseError(&err, resp.Response) 315} 316