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  }