// +build go1.13 // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. // Code generated by Microsoft (R) AutoRest Code Generator. // Changes may cause incorrect behavior and will be lost if the code is regenerated. package armnetwork import ( "context" "github.com/Azure/azure-sdk-for-go/sdk/armcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "net/http" "net/url" "strings" "time" ) // VpnServerConfigurationsClient contains the methods for the VpnServerConfigurations group. // Don't use this type directly, use NewVpnServerConfigurationsClient() instead. type VpnServerConfigurationsClient struct { con *armcore.Connection subscriptionID string } // NewVpnServerConfigurationsClient creates a new instance of VpnServerConfigurationsClient with the specified values. func NewVpnServerConfigurationsClient(con *armcore.Connection, subscriptionID string) *VpnServerConfigurationsClient { return &VpnServerConfigurationsClient{con: con, subscriptionID: subscriptionID} } // BeginCreateOrUpdate - Creates a VpnServerConfiguration resource if it doesn't exist else updates the existing VpnServerConfiguration. func (client *VpnServerConfigurationsClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters VpnServerConfiguration, options *VpnServerConfigurationsBeginCreateOrUpdateOptions) (VpnServerConfigurationPollerResponse, error) { resp, err := client.createOrUpdate(ctx, resourceGroupName, vpnServerConfigurationName, vpnServerConfigurationParameters, options) if err != nil { return VpnServerConfigurationPollerResponse{}, err } result := VpnServerConfigurationPollerResponse{ RawResponse: resp.Response, } pt, err := armcore.NewPoller("VpnServerConfigurationsClient.CreateOrUpdate", "azure-async-operation", resp, client.createOrUpdateHandleError) if err != nil { return VpnServerConfigurationPollerResponse{}, err } poller := &vpnServerConfigurationPoller{ pt: pt, pipeline: client.con.Pipeline(), } result.Poller = poller result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VpnServerConfigurationResponse, error) { return poller.pollUntilDone(ctx, frequency) } return result, nil } // ResumeCreateOrUpdate creates a new VpnServerConfigurationPoller from the specified resume token. // token - The value must come from a previous call to VpnServerConfigurationPoller.ResumeToken(). func (client *VpnServerConfigurationsClient) ResumeCreateOrUpdate(token string) (VpnServerConfigurationPoller, error) { pt, err := armcore.NewPollerFromResumeToken("VpnServerConfigurationsClient.CreateOrUpdate", token, client.createOrUpdateHandleError) if err != nil { return nil, err } return &vpnServerConfigurationPoller{ pipeline: client.con.Pipeline(), pt: pt, }, nil } // CreateOrUpdate - Creates a VpnServerConfiguration resource if it doesn't exist else updates the existing VpnServerConfiguration. func (client *VpnServerConfigurationsClient) createOrUpdate(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters VpnServerConfiguration, options *VpnServerConfigurationsBeginCreateOrUpdateOptions) (*azcore.Response, error) { req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, vpnServerConfigurationName, vpnServerConfigurationParameters, options) if err != nil { return nil, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return nil, err } if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) { return nil, client.createOrUpdateHandleError(resp) } return resp, nil } // createOrUpdateCreateRequest creates the CreateOrUpdate request. func (client *VpnServerConfigurationsClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters VpnServerConfiguration, options *VpnServerConfigurationsBeginCreateOrUpdateOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}" urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) urlPath = strings.ReplaceAll(urlPath, "{vpnServerConfigurationName}", url.PathEscape(vpnServerConfigurationName)) req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) query := req.URL.Query() query.Set("api-version", "2020-07-01") req.URL.RawQuery = query.Encode() req.Header.Set("Accept", "application/json") return req, req.MarshalAsJSON(vpnServerConfigurationParameters) } // createOrUpdateHandleResponse handles the CreateOrUpdate response. func (client *VpnServerConfigurationsClient) createOrUpdateHandleResponse(resp *azcore.Response) (VpnServerConfigurationResponse, error) { var val *VpnServerConfiguration if err := resp.UnmarshalAsJSON(&val); err != nil { return VpnServerConfigurationResponse{}, err } return VpnServerConfigurationResponse{RawResponse: resp.Response, VpnServerConfiguration: val}, nil } // createOrUpdateHandleError handles the CreateOrUpdate error response. func (client *VpnServerConfigurationsClient) createOrUpdateHandleError(resp *azcore.Response) error { var err CloudError if err := resp.UnmarshalAsJSON(&err); err != nil { return err } return azcore.NewResponseError(&err, resp.Response) } // BeginDelete - Deletes a VpnServerConfiguration. func (client *VpnServerConfigurationsClient) BeginDelete(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, options *VpnServerConfigurationsBeginDeleteOptions) (HTTPPollerResponse, error) { resp, err := client.delete(ctx, resourceGroupName, vpnServerConfigurationName, options) if err != nil { return HTTPPollerResponse{}, err } result := HTTPPollerResponse{ RawResponse: resp.Response, } pt, err := armcore.NewPoller("VpnServerConfigurationsClient.Delete", "location", resp, client.deleteHandleError) if err != nil { return HTTPPollerResponse{}, err } poller := &httpPoller{ pt: pt, pipeline: client.con.Pipeline(), } result.Poller = poller result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) { return poller.pollUntilDone(ctx, frequency) } return result, nil } // ResumeDelete creates a new HTTPPoller from the specified resume token. // token - The value must come from a previous call to HTTPPoller.ResumeToken(). func (client *VpnServerConfigurationsClient) ResumeDelete(token string) (HTTPPoller, error) { pt, err := armcore.NewPollerFromResumeToken("VpnServerConfigurationsClient.Delete", token, client.deleteHandleError) if err != nil { return nil, err } return &httpPoller{ pipeline: client.con.Pipeline(), pt: pt, }, nil } // Delete - Deletes a VpnServerConfiguration. func (client *VpnServerConfigurationsClient) delete(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, options *VpnServerConfigurationsBeginDeleteOptions) (*azcore.Response, error) { req, err := client.deleteCreateRequest(ctx, resourceGroupName, vpnServerConfigurationName, options) if err != nil { return nil, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return nil, err } if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent) { return nil, client.deleteHandleError(resp) } return resp, nil } // deleteCreateRequest creates the Delete request. func (client *VpnServerConfigurationsClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, options *VpnServerConfigurationsBeginDeleteOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}" urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) urlPath = strings.ReplaceAll(urlPath, "{vpnServerConfigurationName}", url.PathEscape(vpnServerConfigurationName)) req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) query := req.URL.Query() query.Set("api-version", "2020-07-01") req.URL.RawQuery = query.Encode() req.Header.Set("Accept", "application/json") return req, nil } // deleteHandleError handles the Delete error response. func (client *VpnServerConfigurationsClient) deleteHandleError(resp *azcore.Response) error { var err CloudError if err := resp.UnmarshalAsJSON(&err); err != nil { return err } return azcore.NewResponseError(&err, resp.Response) } // Get - Retrieves the details of a VpnServerConfiguration. func (client *VpnServerConfigurationsClient) Get(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, options *VpnServerConfigurationsGetOptions) (VpnServerConfigurationResponse, error) { req, err := client.getCreateRequest(ctx, resourceGroupName, vpnServerConfigurationName, options) if err != nil { return VpnServerConfigurationResponse{}, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return VpnServerConfigurationResponse{}, err } if !resp.HasStatusCode(http.StatusOK) { return VpnServerConfigurationResponse{}, client.getHandleError(resp) } return client.getHandleResponse(resp) } // getCreateRequest creates the Get request. func (client *VpnServerConfigurationsClient) getCreateRequest(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, options *VpnServerConfigurationsGetOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}" urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) urlPath = strings.ReplaceAll(urlPath, "{vpnServerConfigurationName}", url.PathEscape(vpnServerConfigurationName)) req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) query := req.URL.Query() query.Set("api-version", "2020-07-01") req.URL.RawQuery = query.Encode() req.Header.Set("Accept", "application/json") return req, nil } // getHandleResponse handles the Get response. func (client *VpnServerConfigurationsClient) getHandleResponse(resp *azcore.Response) (VpnServerConfigurationResponse, error) { var val *VpnServerConfiguration if err := resp.UnmarshalAsJSON(&val); err != nil { return VpnServerConfigurationResponse{}, err } return VpnServerConfigurationResponse{RawResponse: resp.Response, VpnServerConfiguration: val}, nil } // getHandleError handles the Get error response. func (client *VpnServerConfigurationsClient) getHandleError(resp *azcore.Response) error { var err CloudError if err := resp.UnmarshalAsJSON(&err); err != nil { return err } return azcore.NewResponseError(&err, resp.Response) } // List - Lists all the VpnServerConfigurations in a subscription. func (client *VpnServerConfigurationsClient) List(options *VpnServerConfigurationsListOptions) ListVpnServerConfigurationsResultPager { return &listVpnServerConfigurationsResultPager{ pipeline: client.con.Pipeline(), requester: func(ctx context.Context) (*azcore.Request, error) { return client.listCreateRequest(ctx, options) }, responder: client.listHandleResponse, errorer: client.listHandleError, advancer: func(ctx context.Context, resp ListVpnServerConfigurationsResultResponse) (*azcore.Request, error) { return azcore.NewRequest(ctx, http.MethodGet, *resp.ListVpnServerConfigurationsResult.NextLink) }, statusCodes: []int{http.StatusOK}, } } // listCreateRequest creates the List request. func (client *VpnServerConfigurationsClient) listCreateRequest(ctx context.Context, options *VpnServerConfigurationsListOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnServerConfigurations" urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) query := req.URL.Query() query.Set("api-version", "2020-07-01") req.URL.RawQuery = query.Encode() req.Header.Set("Accept", "application/json") return req, nil } // listHandleResponse handles the List response. func (client *VpnServerConfigurationsClient) listHandleResponse(resp *azcore.Response) (ListVpnServerConfigurationsResultResponse, error) { var val *ListVpnServerConfigurationsResult if err := resp.UnmarshalAsJSON(&val); err != nil { return ListVpnServerConfigurationsResultResponse{}, err } return ListVpnServerConfigurationsResultResponse{RawResponse: resp.Response, ListVpnServerConfigurationsResult: val}, nil } // listHandleError handles the List error response. func (client *VpnServerConfigurationsClient) listHandleError(resp *azcore.Response) error { var err CloudError if err := resp.UnmarshalAsJSON(&err); err != nil { return err } return azcore.NewResponseError(&err, resp.Response) } // ListByResourceGroup - Lists all the vpnServerConfigurations in a resource group. func (client *VpnServerConfigurationsClient) ListByResourceGroup(resourceGroupName string, options *VpnServerConfigurationsListByResourceGroupOptions) ListVpnServerConfigurationsResultPager { return &listVpnServerConfigurationsResultPager{ pipeline: client.con.Pipeline(), requester: func(ctx context.Context) (*azcore.Request, error) { return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) }, responder: client.listByResourceGroupHandleResponse, errorer: client.listByResourceGroupHandleError, advancer: func(ctx context.Context, resp ListVpnServerConfigurationsResultResponse) (*azcore.Request, error) { return azcore.NewRequest(ctx, http.MethodGet, *resp.ListVpnServerConfigurationsResult.NextLink) }, statusCodes: []int{http.StatusOK}, } } // listByResourceGroupCreateRequest creates the ListByResourceGroup request. func (client *VpnServerConfigurationsClient) listByResourceGroupCreateRequest(ctx context.Context, resourceGroupName string, options *VpnServerConfigurationsListByResourceGroupOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations" urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) query := req.URL.Query() query.Set("api-version", "2020-07-01") req.URL.RawQuery = query.Encode() req.Header.Set("Accept", "application/json") return req, nil } // listByResourceGroupHandleResponse handles the ListByResourceGroup response. func (client *VpnServerConfigurationsClient) listByResourceGroupHandleResponse(resp *azcore.Response) (ListVpnServerConfigurationsResultResponse, error) { var val *ListVpnServerConfigurationsResult if err := resp.UnmarshalAsJSON(&val); err != nil { return ListVpnServerConfigurationsResultResponse{}, err } return ListVpnServerConfigurationsResultResponse{RawResponse: resp.Response, ListVpnServerConfigurationsResult: val}, nil } // listByResourceGroupHandleError handles the ListByResourceGroup error response. func (client *VpnServerConfigurationsClient) listByResourceGroupHandleError(resp *azcore.Response) error { var err CloudError if err := resp.UnmarshalAsJSON(&err); err != nil { return err } return azcore.NewResponseError(&err, resp.Response) } // UpdateTags - Updates VpnServerConfiguration tags. func (client *VpnServerConfigurationsClient) UpdateTags(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters TagsObject, options *VpnServerConfigurationsUpdateTagsOptions) (VpnServerConfigurationResponse, error) { req, err := client.updateTagsCreateRequest(ctx, resourceGroupName, vpnServerConfigurationName, vpnServerConfigurationParameters, options) if err != nil { return VpnServerConfigurationResponse{}, err } resp, err := client.con.Pipeline().Do(req) if err != nil { return VpnServerConfigurationResponse{}, err } if !resp.HasStatusCode(http.StatusOK) { return VpnServerConfigurationResponse{}, client.updateTagsHandleError(resp) } return client.updateTagsHandleResponse(resp) } // updateTagsCreateRequest creates the UpdateTags request. func (client *VpnServerConfigurationsClient) updateTagsCreateRequest(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters TagsObject, options *VpnServerConfigurationsUpdateTagsOptions) (*azcore.Request, error) { urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}" urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) urlPath = strings.ReplaceAll(urlPath, "{vpnServerConfigurationName}", url.PathEscape(vpnServerConfigurationName)) req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath)) if err != nil { return nil, err } req.Telemetry(telemetryInfo) query := req.URL.Query() query.Set("api-version", "2020-07-01") req.URL.RawQuery = query.Encode() req.Header.Set("Accept", "application/json") return req, req.MarshalAsJSON(vpnServerConfigurationParameters) } // updateTagsHandleResponse handles the UpdateTags response. func (client *VpnServerConfigurationsClient) updateTagsHandleResponse(resp *azcore.Response) (VpnServerConfigurationResponse, error) { var val *VpnServerConfiguration if err := resp.UnmarshalAsJSON(&val); err != nil { return VpnServerConfigurationResponse{}, err } return VpnServerConfigurationResponse{RawResponse: resp.Response, VpnServerConfiguration: val}, nil } // updateTagsHandleError handles the UpdateTags error response. func (client *VpnServerConfigurationsClient) updateTagsHandleError(resp *azcore.Response) error { var err CloudError if err := resp.UnmarshalAsJSON(&err); err != nil { return err } return azcore.NewResponseError(&err, resp.Response) }