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	"errors"
13	"fmt"
14	"github.com/Azure/azure-sdk-for-go/sdk/armcore"
15	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
16	"net/http"
17	"net/url"
18	"strings"
19	"time"
20)
21
22// VirtualNetworkGatewayConnectionsClient contains the methods for the VirtualNetworkGatewayConnections group.
23// Don't use this type directly, use NewVirtualNetworkGatewayConnectionsClient() instead.
24type VirtualNetworkGatewayConnectionsClient struct {
25	con            *armcore.Connection
26	subscriptionID string
27}
28
29// NewVirtualNetworkGatewayConnectionsClient creates a new instance of VirtualNetworkGatewayConnectionsClient with the specified values.
30func NewVirtualNetworkGatewayConnectionsClient(con *armcore.Connection, subscriptionID string) *VirtualNetworkGatewayConnectionsClient {
31	return &VirtualNetworkGatewayConnectionsClient{con: con, subscriptionID: subscriptionID}
32}
33
34// BeginCreateOrUpdate - Creates or updates a virtual network gateway connection in the specified resource group.
35// If the operation fails it returns the *CloudError error type.
36func (client *VirtualNetworkGatewayConnectionsClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection, options *VirtualNetworkGatewayConnectionsBeginCreateOrUpdateOptions) (VirtualNetworkGatewayConnectionPollerResponse, error) {
37	resp, err := client.createOrUpdate(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
38	if err != nil {
39		return VirtualNetworkGatewayConnectionPollerResponse{}, err
40	}
41	result := VirtualNetworkGatewayConnectionPollerResponse{
42		RawResponse: resp.Response,
43	}
44	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.CreateOrUpdate", "azure-async-operation", resp, client.con.Pipeline(), client.createOrUpdateHandleError)
45	if err != nil {
46		return VirtualNetworkGatewayConnectionPollerResponse{}, err
47	}
48	poller := &virtualNetworkGatewayConnectionPoller{
49		pt: pt,
50	}
51	result.Poller = poller
52	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VirtualNetworkGatewayConnectionResponse, error) {
53		return poller.pollUntilDone(ctx, frequency)
54	}
55	return result, nil
56}
57
58// ResumeCreateOrUpdate creates a new VirtualNetworkGatewayConnectionPoller from the specified resume token.
59// token - The value must come from a previous call to VirtualNetworkGatewayConnectionPoller.ResumeToken().
60func (client *VirtualNetworkGatewayConnectionsClient) ResumeCreateOrUpdate(ctx context.Context, token string) (VirtualNetworkGatewayConnectionPollerResponse, error) {
61	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.CreateOrUpdate", token, client.con.Pipeline(), client.createOrUpdateHandleError)
62	if err != nil {
63		return VirtualNetworkGatewayConnectionPollerResponse{}, err
64	}
65	poller := &virtualNetworkGatewayConnectionPoller{
66		pt: pt,
67	}
68	resp, err := poller.Poll(ctx)
69	if err != nil {
70		return VirtualNetworkGatewayConnectionPollerResponse{}, err
71	}
72	result := VirtualNetworkGatewayConnectionPollerResponse{
73		RawResponse: resp,
74	}
75	result.Poller = poller
76	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VirtualNetworkGatewayConnectionResponse, error) {
77		return poller.pollUntilDone(ctx, frequency)
78	}
79	return result, nil
80}
81
82// CreateOrUpdate - Creates or updates a virtual network gateway connection in the specified resource group.
83// If the operation fails it returns the *CloudError error type.
84func (client *VirtualNetworkGatewayConnectionsClient) createOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection, options *VirtualNetworkGatewayConnectionsBeginCreateOrUpdateOptions) (*azcore.Response, error) {
85	req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
86	if err != nil {
87		return nil, err
88	}
89	resp, err := client.con.Pipeline().Do(req)
90	if err != nil {
91		return nil, err
92	}
93	if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) {
94		return nil, client.createOrUpdateHandleError(resp)
95	}
96	return resp, nil
97}
98
99// createOrUpdateCreateRequest creates the CreateOrUpdate request.
100func (client *VirtualNetworkGatewayConnectionsClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection, options *VirtualNetworkGatewayConnectionsBeginCreateOrUpdateOptions) (*azcore.Request, error) {
101	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"
102	if resourceGroupName == "" {
103		return nil, errors.New("parameter resourceGroupName cannot be empty")
104	}
105	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
106	if virtualNetworkGatewayConnectionName == "" {
107		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
108	}
109	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
110	if client.subscriptionID == "" {
111		return nil, errors.New("parameter client.subscriptionID cannot be empty")
112	}
113	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
114	req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath))
115	if err != nil {
116		return nil, err
117	}
118	req.Telemetry(telemetryInfo)
119	reqQP := req.URL.Query()
120	reqQP.Set("api-version", "2021-02-01")
121	req.URL.RawQuery = reqQP.Encode()
122	req.Header.Set("Accept", "application/json")
123	return req, req.MarshalAsJSON(parameters)
124}
125
126// createOrUpdateHandleError handles the CreateOrUpdate error response.
127func (client *VirtualNetworkGatewayConnectionsClient) createOrUpdateHandleError(resp *azcore.Response) error {
128	body, err := resp.Payload()
129	if err != nil {
130		return azcore.NewResponseError(err, resp.Response)
131	}
132	errType := CloudError{raw: string(body)}
133	if err := resp.UnmarshalAsJSON(&errType); err != nil {
134		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
135	}
136	return azcore.NewResponseError(&errType, resp.Response)
137}
138
139// BeginDelete - Deletes the specified virtual network Gateway connection.
140// If the operation fails it returns the *CloudError error type.
141func (client *VirtualNetworkGatewayConnectionsClient) BeginDelete(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginDeleteOptions) (HTTPPollerResponse, error) {
142	resp, err := client.deleteOperation(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
143	if err != nil {
144		return HTTPPollerResponse{}, err
145	}
146	result := HTTPPollerResponse{
147		RawResponse: resp.Response,
148	}
149	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.Delete", "location", resp, client.con.Pipeline(), client.deleteHandleError)
150	if err != nil {
151		return HTTPPollerResponse{}, err
152	}
153	poller := &httpPoller{
154		pt: pt,
155	}
156	result.Poller = poller
157	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) {
158		return poller.pollUntilDone(ctx, frequency)
159	}
160	return result, nil
161}
162
163// ResumeDelete creates a new HTTPPoller from the specified resume token.
164// token - The value must come from a previous call to HTTPPoller.ResumeToken().
165func (client *VirtualNetworkGatewayConnectionsClient) ResumeDelete(ctx context.Context, token string) (HTTPPollerResponse, error) {
166	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.Delete", token, client.con.Pipeline(), client.deleteHandleError)
167	if err != nil {
168		return HTTPPollerResponse{}, err
169	}
170	poller := &httpPoller{
171		pt: pt,
172	}
173	resp, err := poller.Poll(ctx)
174	if err != nil {
175		return HTTPPollerResponse{}, err
176	}
177	result := HTTPPollerResponse{
178		RawResponse: resp,
179	}
180	result.Poller = poller
181	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) {
182		return poller.pollUntilDone(ctx, frequency)
183	}
184	return result, nil
185}
186
187// Delete - Deletes the specified virtual network Gateway connection.
188// If the operation fails it returns the *CloudError error type.
189func (client *VirtualNetworkGatewayConnectionsClient) deleteOperation(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginDeleteOptions) (*azcore.Response, error) {
190	req, err := client.deleteCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
191	if err != nil {
192		return nil, err
193	}
194	resp, err := client.con.Pipeline().Do(req)
195	if err != nil {
196		return nil, err
197	}
198	if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent) {
199		return nil, client.deleteHandleError(resp)
200	}
201	return resp, nil
202}
203
204// deleteCreateRequest creates the Delete request.
205func (client *VirtualNetworkGatewayConnectionsClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginDeleteOptions) (*azcore.Request, error) {
206	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"
207	if resourceGroupName == "" {
208		return nil, errors.New("parameter resourceGroupName cannot be empty")
209	}
210	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
211	if virtualNetworkGatewayConnectionName == "" {
212		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
213	}
214	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
215	if client.subscriptionID == "" {
216		return nil, errors.New("parameter client.subscriptionID cannot be empty")
217	}
218	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
219	req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath))
220	if err != nil {
221		return nil, err
222	}
223	req.Telemetry(telemetryInfo)
224	reqQP := req.URL.Query()
225	reqQP.Set("api-version", "2021-02-01")
226	req.URL.RawQuery = reqQP.Encode()
227	req.Header.Set("Accept", "application/json")
228	return req, nil
229}
230
231// deleteHandleError handles the Delete error response.
232func (client *VirtualNetworkGatewayConnectionsClient) deleteHandleError(resp *azcore.Response) error {
233	body, err := resp.Payload()
234	if err != nil {
235		return azcore.NewResponseError(err, resp.Response)
236	}
237	errType := CloudError{raw: string(body)}
238	if err := resp.UnmarshalAsJSON(&errType); err != nil {
239		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
240	}
241	return azcore.NewResponseError(&errType, resp.Response)
242}
243
244// Get - Gets the specified virtual network gateway connection by resource group.
245// If the operation fails it returns the *CloudError error type.
246func (client *VirtualNetworkGatewayConnectionsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsGetOptions) (VirtualNetworkGatewayConnectionResponse, error) {
247	req, err := client.getCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
248	if err != nil {
249		return VirtualNetworkGatewayConnectionResponse{}, err
250	}
251	resp, err := client.con.Pipeline().Do(req)
252	if err != nil {
253		return VirtualNetworkGatewayConnectionResponse{}, err
254	}
255	if !resp.HasStatusCode(http.StatusOK) {
256		return VirtualNetworkGatewayConnectionResponse{}, client.getHandleError(resp)
257	}
258	return client.getHandleResponse(resp)
259}
260
261// getCreateRequest creates the Get request.
262func (client *VirtualNetworkGatewayConnectionsClient) getCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsGetOptions) (*azcore.Request, error) {
263	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"
264	if resourceGroupName == "" {
265		return nil, errors.New("parameter resourceGroupName cannot be empty")
266	}
267	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
268	if virtualNetworkGatewayConnectionName == "" {
269		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
270	}
271	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
272	if client.subscriptionID == "" {
273		return nil, errors.New("parameter client.subscriptionID cannot be empty")
274	}
275	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
276	req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath))
277	if err != nil {
278		return nil, err
279	}
280	req.Telemetry(telemetryInfo)
281	reqQP := req.URL.Query()
282	reqQP.Set("api-version", "2021-02-01")
283	req.URL.RawQuery = reqQP.Encode()
284	req.Header.Set("Accept", "application/json")
285	return req, nil
286}
287
288// getHandleResponse handles the Get response.
289func (client *VirtualNetworkGatewayConnectionsClient) getHandleResponse(resp *azcore.Response) (VirtualNetworkGatewayConnectionResponse, error) {
290	var val *VirtualNetworkGatewayConnection
291	if err := resp.UnmarshalAsJSON(&val); err != nil {
292		return VirtualNetworkGatewayConnectionResponse{}, err
293	}
294	return VirtualNetworkGatewayConnectionResponse{RawResponse: resp.Response, VirtualNetworkGatewayConnection: val}, nil
295}
296
297// getHandleError handles the Get error response.
298func (client *VirtualNetworkGatewayConnectionsClient) getHandleError(resp *azcore.Response) error {
299	body, err := resp.Payload()
300	if err != nil {
301		return azcore.NewResponseError(err, resp.Response)
302	}
303	errType := CloudError{raw: string(body)}
304	if err := resp.UnmarshalAsJSON(&errType); err != nil {
305		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
306	}
307	return azcore.NewResponseError(&errType, resp.Response)
308}
309
310// BeginGetIkeSas - Lists IKE Security Associations for the virtual network gateway connection in the specified resource group.
311// If the operation fails it returns the *ErrorResponse error type.
312func (client *VirtualNetworkGatewayConnectionsClient) BeginGetIkeSas(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginGetIkeSasOptions) (StringPollerResponse, error) {
313	resp, err := client.getIkeSas(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
314	if err != nil {
315		return StringPollerResponse{}, err
316	}
317	result := StringPollerResponse{
318		RawResponse: resp.Response,
319	}
320	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.GetIkeSas", "location", resp, client.con.Pipeline(), client.getIkeSasHandleError)
321	if err != nil {
322		return StringPollerResponse{}, err
323	}
324	poller := &stringPoller{
325		pt: pt,
326	}
327	result.Poller = poller
328	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (StringResponse, error) {
329		return poller.pollUntilDone(ctx, frequency)
330	}
331	return result, nil
332}
333
334// ResumeGetIkeSas creates a new StringPoller from the specified resume token.
335// token - The value must come from a previous call to StringPoller.ResumeToken().
336func (client *VirtualNetworkGatewayConnectionsClient) ResumeGetIkeSas(ctx context.Context, token string) (StringPollerResponse, error) {
337	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.GetIkeSas", token, client.con.Pipeline(), client.getIkeSasHandleError)
338	if err != nil {
339		return StringPollerResponse{}, err
340	}
341	poller := &stringPoller{
342		pt: pt,
343	}
344	resp, err := poller.Poll(ctx)
345	if err != nil {
346		return StringPollerResponse{}, err
347	}
348	result := StringPollerResponse{
349		RawResponse: resp,
350	}
351	result.Poller = poller
352	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (StringResponse, error) {
353		return poller.pollUntilDone(ctx, frequency)
354	}
355	return result, nil
356}
357
358// GetIkeSas - Lists IKE Security Associations for the virtual network gateway connection in the specified resource group.
359// If the operation fails it returns the *ErrorResponse error type.
360func (client *VirtualNetworkGatewayConnectionsClient) getIkeSas(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginGetIkeSasOptions) (*azcore.Response, error) {
361	req, err := client.getIkeSasCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
362	if err != nil {
363		return nil, err
364	}
365	resp, err := client.con.Pipeline().Do(req)
366	if err != nil {
367		return nil, err
368	}
369	if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) {
370		return nil, client.getIkeSasHandleError(resp)
371	}
372	return resp, nil
373}
374
375// getIkeSasCreateRequest creates the GetIkeSas request.
376func (client *VirtualNetworkGatewayConnectionsClient) getIkeSasCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginGetIkeSasOptions) (*azcore.Request, error) {
377	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/getikesas"
378	if resourceGroupName == "" {
379		return nil, errors.New("parameter resourceGroupName cannot be empty")
380	}
381	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
382	if virtualNetworkGatewayConnectionName == "" {
383		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
384	}
385	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
386	if client.subscriptionID == "" {
387		return nil, errors.New("parameter client.subscriptionID cannot be empty")
388	}
389	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
390	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
391	if err != nil {
392		return nil, err
393	}
394	req.Telemetry(telemetryInfo)
395	reqQP := req.URL.Query()
396	reqQP.Set("api-version", "2021-02-01")
397	req.URL.RawQuery = reqQP.Encode()
398	req.Header.Set("Accept", "application/json")
399	return req, nil
400}
401
402// getIkeSasHandleError handles the GetIkeSas error response.
403func (client *VirtualNetworkGatewayConnectionsClient) getIkeSasHandleError(resp *azcore.Response) error {
404	body, err := resp.Payload()
405	if err != nil {
406		return azcore.NewResponseError(err, resp.Response)
407	}
408	errType := ErrorResponse{raw: string(body)}
409	if err := resp.UnmarshalAsJSON(&errType); err != nil {
410		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
411	}
412	return azcore.NewResponseError(&errType, resp.Response)
413}
414
415// GetSharedKey - The Get VirtualNetworkGatewayConnectionSharedKey operation retrieves information about the specified virtual network gateway connection
416// shared key through Network resource provider.
417// If the operation fails it returns the *CloudError error type.
418func (client *VirtualNetworkGatewayConnectionsClient) GetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsGetSharedKeyOptions) (ConnectionSharedKeyResponse, error) {
419	req, err := client.getSharedKeyCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
420	if err != nil {
421		return ConnectionSharedKeyResponse{}, err
422	}
423	resp, err := client.con.Pipeline().Do(req)
424	if err != nil {
425		return ConnectionSharedKeyResponse{}, err
426	}
427	if !resp.HasStatusCode(http.StatusOK) {
428		return ConnectionSharedKeyResponse{}, client.getSharedKeyHandleError(resp)
429	}
430	return client.getSharedKeyHandleResponse(resp)
431}
432
433// getSharedKeyCreateRequest creates the GetSharedKey request.
434func (client *VirtualNetworkGatewayConnectionsClient) getSharedKeyCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsGetSharedKeyOptions) (*azcore.Request, error) {
435	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"
436	if resourceGroupName == "" {
437		return nil, errors.New("parameter resourceGroupName cannot be empty")
438	}
439	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
440	if virtualNetworkGatewayConnectionName == "" {
441		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
442	}
443	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
444	if client.subscriptionID == "" {
445		return nil, errors.New("parameter client.subscriptionID cannot be empty")
446	}
447	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
448	req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath))
449	if err != nil {
450		return nil, err
451	}
452	req.Telemetry(telemetryInfo)
453	reqQP := req.URL.Query()
454	reqQP.Set("api-version", "2021-02-01")
455	req.URL.RawQuery = reqQP.Encode()
456	req.Header.Set("Accept", "application/json")
457	return req, nil
458}
459
460// getSharedKeyHandleResponse handles the GetSharedKey response.
461func (client *VirtualNetworkGatewayConnectionsClient) getSharedKeyHandleResponse(resp *azcore.Response) (ConnectionSharedKeyResponse, error) {
462	var val *ConnectionSharedKey
463	if err := resp.UnmarshalAsJSON(&val); err != nil {
464		return ConnectionSharedKeyResponse{}, err
465	}
466	return ConnectionSharedKeyResponse{RawResponse: resp.Response, ConnectionSharedKey: val}, nil
467}
468
469// getSharedKeyHandleError handles the GetSharedKey error response.
470func (client *VirtualNetworkGatewayConnectionsClient) getSharedKeyHandleError(resp *azcore.Response) error {
471	body, err := resp.Payload()
472	if err != nil {
473		return azcore.NewResponseError(err, resp.Response)
474	}
475	errType := CloudError{raw: string(body)}
476	if err := resp.UnmarshalAsJSON(&errType); err != nil {
477		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
478	}
479	return azcore.NewResponseError(&errType, resp.Response)
480}
481
482// List - The List VirtualNetworkGatewayConnections operation retrieves all the virtual network gateways connections created.
483// If the operation fails it returns the *CloudError error type.
484func (client *VirtualNetworkGatewayConnectionsClient) List(resourceGroupName string, options *VirtualNetworkGatewayConnectionsListOptions) VirtualNetworkGatewayConnectionListResultPager {
485	return &virtualNetworkGatewayConnectionListResultPager{
486		pipeline: client.con.Pipeline(),
487		requester: func(ctx context.Context) (*azcore.Request, error) {
488			return client.listCreateRequest(ctx, resourceGroupName, options)
489		},
490		responder: client.listHandleResponse,
491		errorer:   client.listHandleError,
492		advancer: func(ctx context.Context, resp VirtualNetworkGatewayConnectionListResultResponse) (*azcore.Request, error) {
493			return azcore.NewRequest(ctx, http.MethodGet, *resp.VirtualNetworkGatewayConnectionListResult.NextLink)
494		},
495		statusCodes: []int{http.StatusOK},
496	}
497}
498
499// listCreateRequest creates the List request.
500func (client *VirtualNetworkGatewayConnectionsClient) listCreateRequest(ctx context.Context, resourceGroupName string, options *VirtualNetworkGatewayConnectionsListOptions) (*azcore.Request, error) {
501	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections"
502	if resourceGroupName == "" {
503		return nil, errors.New("parameter resourceGroupName cannot be empty")
504	}
505	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
506	if client.subscriptionID == "" {
507		return nil, errors.New("parameter client.subscriptionID cannot be empty")
508	}
509	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
510	req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath))
511	if err != nil {
512		return nil, err
513	}
514	req.Telemetry(telemetryInfo)
515	reqQP := req.URL.Query()
516	reqQP.Set("api-version", "2021-02-01")
517	req.URL.RawQuery = reqQP.Encode()
518	req.Header.Set("Accept", "application/json")
519	return req, nil
520}
521
522// listHandleResponse handles the List response.
523func (client *VirtualNetworkGatewayConnectionsClient) listHandleResponse(resp *azcore.Response) (VirtualNetworkGatewayConnectionListResultResponse, error) {
524	var val *VirtualNetworkGatewayConnectionListResult
525	if err := resp.UnmarshalAsJSON(&val); err != nil {
526		return VirtualNetworkGatewayConnectionListResultResponse{}, err
527	}
528	return VirtualNetworkGatewayConnectionListResultResponse{RawResponse: resp.Response, VirtualNetworkGatewayConnectionListResult: val}, nil
529}
530
531// listHandleError handles the List error response.
532func (client *VirtualNetworkGatewayConnectionsClient) listHandleError(resp *azcore.Response) error {
533	body, err := resp.Payload()
534	if err != nil {
535		return azcore.NewResponseError(err, resp.Response)
536	}
537	errType := CloudError{raw: string(body)}
538	if err := resp.UnmarshalAsJSON(&errType); err != nil {
539		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
540	}
541	return azcore.NewResponseError(&errType, resp.Response)
542}
543
544// BeginResetConnection - Resets the virtual network gateway connection specified.
545// If the operation fails it returns the *ErrorResponse error type.
546func (client *VirtualNetworkGatewayConnectionsClient) BeginResetConnection(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginResetConnectionOptions) (HTTPPollerResponse, error) {
547	resp, err := client.resetConnection(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
548	if err != nil {
549		return HTTPPollerResponse{}, err
550	}
551	result := HTTPPollerResponse{
552		RawResponse: resp.Response,
553	}
554	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.ResetConnection", "location", resp, client.con.Pipeline(), client.resetConnectionHandleError)
555	if err != nil {
556		return HTTPPollerResponse{}, err
557	}
558	poller := &httpPoller{
559		pt: pt,
560	}
561	result.Poller = poller
562	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) {
563		return poller.pollUntilDone(ctx, frequency)
564	}
565	return result, nil
566}
567
568// ResumeResetConnection creates a new HTTPPoller from the specified resume token.
569// token - The value must come from a previous call to HTTPPoller.ResumeToken().
570func (client *VirtualNetworkGatewayConnectionsClient) ResumeResetConnection(ctx context.Context, token string) (HTTPPollerResponse, error) {
571	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.ResetConnection", token, client.con.Pipeline(), client.resetConnectionHandleError)
572	if err != nil {
573		return HTTPPollerResponse{}, err
574	}
575	poller := &httpPoller{
576		pt: pt,
577	}
578	resp, err := poller.Poll(ctx)
579	if err != nil {
580		return HTTPPollerResponse{}, err
581	}
582	result := HTTPPollerResponse{
583		RawResponse: resp,
584	}
585	result.Poller = poller
586	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) {
587		return poller.pollUntilDone(ctx, frequency)
588	}
589	return result, nil
590}
591
592// ResetConnection - Resets the virtual network gateway connection specified.
593// If the operation fails it returns the *ErrorResponse error type.
594func (client *VirtualNetworkGatewayConnectionsClient) resetConnection(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginResetConnectionOptions) (*azcore.Response, error) {
595	req, err := client.resetConnectionCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
596	if err != nil {
597		return nil, err
598	}
599	resp, err := client.con.Pipeline().Do(req)
600	if err != nil {
601		return nil, err
602	}
603	if !resp.HasStatusCode(http.StatusAccepted) {
604		return nil, client.resetConnectionHandleError(resp)
605	}
606	return resp, nil
607}
608
609// resetConnectionCreateRequest creates the ResetConnection request.
610func (client *VirtualNetworkGatewayConnectionsClient) resetConnectionCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginResetConnectionOptions) (*azcore.Request, error) {
611	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/resetconnection"
612	if resourceGroupName == "" {
613		return nil, errors.New("parameter resourceGroupName cannot be empty")
614	}
615	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
616	if virtualNetworkGatewayConnectionName == "" {
617		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
618	}
619	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
620	if client.subscriptionID == "" {
621		return nil, errors.New("parameter client.subscriptionID cannot be empty")
622	}
623	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
624	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
625	if err != nil {
626		return nil, err
627	}
628	req.Telemetry(telemetryInfo)
629	reqQP := req.URL.Query()
630	reqQP.Set("api-version", "2021-02-01")
631	req.URL.RawQuery = reqQP.Encode()
632	req.Header.Set("Accept", "application/json")
633	return req, nil
634}
635
636// resetConnectionHandleError handles the ResetConnection error response.
637func (client *VirtualNetworkGatewayConnectionsClient) resetConnectionHandleError(resp *azcore.Response) error {
638	body, err := resp.Payload()
639	if err != nil {
640		return azcore.NewResponseError(err, resp.Response)
641	}
642	errType := ErrorResponse{raw: string(body)}
643	if err := resp.UnmarshalAsJSON(&errType); err != nil {
644		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
645	}
646	return azcore.NewResponseError(&errType, resp.Response)
647}
648
649// BeginResetSharedKey - The VirtualNetworkGatewayConnectionResetSharedKey operation resets the virtual network gateway connection shared key for passed
650// virtual network gateway connection in the specified resource group
651// through Network resource provider.
652// If the operation fails it returns the *CloudError error type.
653func (client *VirtualNetworkGatewayConnectionsClient) BeginResetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey, options *VirtualNetworkGatewayConnectionsBeginResetSharedKeyOptions) (ConnectionResetSharedKeyPollerResponse, error) {
654	resp, err := client.resetSharedKey(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
655	if err != nil {
656		return ConnectionResetSharedKeyPollerResponse{}, err
657	}
658	result := ConnectionResetSharedKeyPollerResponse{
659		RawResponse: resp.Response,
660	}
661	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.ResetSharedKey", "location", resp, client.con.Pipeline(), client.resetSharedKeyHandleError)
662	if err != nil {
663		return ConnectionResetSharedKeyPollerResponse{}, err
664	}
665	poller := &connectionResetSharedKeyPoller{
666		pt: pt,
667	}
668	result.Poller = poller
669	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (ConnectionResetSharedKeyResponse, error) {
670		return poller.pollUntilDone(ctx, frequency)
671	}
672	return result, nil
673}
674
675// ResumeResetSharedKey creates a new ConnectionResetSharedKeyPoller from the specified resume token.
676// token - The value must come from a previous call to ConnectionResetSharedKeyPoller.ResumeToken().
677func (client *VirtualNetworkGatewayConnectionsClient) ResumeResetSharedKey(ctx context.Context, token string) (ConnectionResetSharedKeyPollerResponse, error) {
678	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.ResetSharedKey", token, client.con.Pipeline(), client.resetSharedKeyHandleError)
679	if err != nil {
680		return ConnectionResetSharedKeyPollerResponse{}, err
681	}
682	poller := &connectionResetSharedKeyPoller{
683		pt: pt,
684	}
685	resp, err := poller.Poll(ctx)
686	if err != nil {
687		return ConnectionResetSharedKeyPollerResponse{}, err
688	}
689	result := ConnectionResetSharedKeyPollerResponse{
690		RawResponse: resp,
691	}
692	result.Poller = poller
693	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (ConnectionResetSharedKeyResponse, error) {
694		return poller.pollUntilDone(ctx, frequency)
695	}
696	return result, nil
697}
698
699// ResetSharedKey - The VirtualNetworkGatewayConnectionResetSharedKey operation resets the virtual network gateway connection shared key for passed virtual
700// network gateway connection in the specified resource group
701// through Network resource provider.
702// If the operation fails it returns the *CloudError error type.
703func (client *VirtualNetworkGatewayConnectionsClient) resetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey, options *VirtualNetworkGatewayConnectionsBeginResetSharedKeyOptions) (*azcore.Response, error) {
704	req, err := client.resetSharedKeyCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
705	if err != nil {
706		return nil, err
707	}
708	resp, err := client.con.Pipeline().Do(req)
709	if err != nil {
710		return nil, err
711	}
712	if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) {
713		return nil, client.resetSharedKeyHandleError(resp)
714	}
715	return resp, nil
716}
717
718// resetSharedKeyCreateRequest creates the ResetSharedKey request.
719func (client *VirtualNetworkGatewayConnectionsClient) resetSharedKeyCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey, options *VirtualNetworkGatewayConnectionsBeginResetSharedKeyOptions) (*azcore.Request, error) {
720	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset"
721	if resourceGroupName == "" {
722		return nil, errors.New("parameter resourceGroupName cannot be empty")
723	}
724	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
725	if virtualNetworkGatewayConnectionName == "" {
726		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
727	}
728	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
729	if client.subscriptionID == "" {
730		return nil, errors.New("parameter client.subscriptionID cannot be empty")
731	}
732	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
733	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
734	if err != nil {
735		return nil, err
736	}
737	req.Telemetry(telemetryInfo)
738	reqQP := req.URL.Query()
739	reqQP.Set("api-version", "2021-02-01")
740	req.URL.RawQuery = reqQP.Encode()
741	req.Header.Set("Accept", "application/json")
742	return req, req.MarshalAsJSON(parameters)
743}
744
745// resetSharedKeyHandleError handles the ResetSharedKey error response.
746func (client *VirtualNetworkGatewayConnectionsClient) resetSharedKeyHandleError(resp *azcore.Response) error {
747	body, err := resp.Payload()
748	if err != nil {
749		return azcore.NewResponseError(err, resp.Response)
750	}
751	errType := CloudError{raw: string(body)}
752	if err := resp.UnmarshalAsJSON(&errType); err != nil {
753		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
754	}
755	return azcore.NewResponseError(&errType, resp.Response)
756}
757
758// BeginSetSharedKey - The Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual network gateway connection shared key for passed virtual
759// network gateway connection in the specified resource group through
760// Network resource provider.
761// If the operation fails it returns the *CloudError error type.
762func (client *VirtualNetworkGatewayConnectionsClient) BeginSetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey, options *VirtualNetworkGatewayConnectionsBeginSetSharedKeyOptions) (ConnectionSharedKeyPollerResponse, error) {
763	resp, err := client.setSharedKey(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
764	if err != nil {
765		return ConnectionSharedKeyPollerResponse{}, err
766	}
767	result := ConnectionSharedKeyPollerResponse{
768		RawResponse: resp.Response,
769	}
770	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.SetSharedKey", "azure-async-operation", resp, client.con.Pipeline(), client.setSharedKeyHandleError)
771	if err != nil {
772		return ConnectionSharedKeyPollerResponse{}, err
773	}
774	poller := &connectionSharedKeyPoller{
775		pt: pt,
776	}
777	result.Poller = poller
778	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (ConnectionSharedKeyResponse, error) {
779		return poller.pollUntilDone(ctx, frequency)
780	}
781	return result, nil
782}
783
784// ResumeSetSharedKey creates a new ConnectionSharedKeyPoller from the specified resume token.
785// token - The value must come from a previous call to ConnectionSharedKeyPoller.ResumeToken().
786func (client *VirtualNetworkGatewayConnectionsClient) ResumeSetSharedKey(ctx context.Context, token string) (ConnectionSharedKeyPollerResponse, error) {
787	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.SetSharedKey", token, client.con.Pipeline(), client.setSharedKeyHandleError)
788	if err != nil {
789		return ConnectionSharedKeyPollerResponse{}, err
790	}
791	poller := &connectionSharedKeyPoller{
792		pt: pt,
793	}
794	resp, err := poller.Poll(ctx)
795	if err != nil {
796		return ConnectionSharedKeyPollerResponse{}, err
797	}
798	result := ConnectionSharedKeyPollerResponse{
799		RawResponse: resp,
800	}
801	result.Poller = poller
802	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (ConnectionSharedKeyResponse, error) {
803		return poller.pollUntilDone(ctx, frequency)
804	}
805	return result, nil
806}
807
808// SetSharedKey - The Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual network gateway connection shared key for passed virtual network
809// gateway connection in the specified resource group through
810// Network resource provider.
811// If the operation fails it returns the *CloudError error type.
812func (client *VirtualNetworkGatewayConnectionsClient) setSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey, options *VirtualNetworkGatewayConnectionsBeginSetSharedKeyOptions) (*azcore.Response, error) {
813	req, err := client.setSharedKeyCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
814	if err != nil {
815		return nil, err
816	}
817	resp, err := client.con.Pipeline().Do(req)
818	if err != nil {
819		return nil, err
820	}
821	if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) {
822		return nil, client.setSharedKeyHandleError(resp)
823	}
824	return resp, nil
825}
826
827// setSharedKeyCreateRequest creates the SetSharedKey request.
828func (client *VirtualNetworkGatewayConnectionsClient) setSharedKeyCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey, options *VirtualNetworkGatewayConnectionsBeginSetSharedKeyOptions) (*azcore.Request, error) {
829	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"
830	if resourceGroupName == "" {
831		return nil, errors.New("parameter resourceGroupName cannot be empty")
832	}
833	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
834	if virtualNetworkGatewayConnectionName == "" {
835		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
836	}
837	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
838	if client.subscriptionID == "" {
839		return nil, errors.New("parameter client.subscriptionID cannot be empty")
840	}
841	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
842	req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath))
843	if err != nil {
844		return nil, err
845	}
846	req.Telemetry(telemetryInfo)
847	reqQP := req.URL.Query()
848	reqQP.Set("api-version", "2021-02-01")
849	req.URL.RawQuery = reqQP.Encode()
850	req.Header.Set("Accept", "application/json")
851	return req, req.MarshalAsJSON(parameters)
852}
853
854// setSharedKeyHandleError handles the SetSharedKey error response.
855func (client *VirtualNetworkGatewayConnectionsClient) setSharedKeyHandleError(resp *azcore.Response) error {
856	body, err := resp.Payload()
857	if err != nil {
858		return azcore.NewResponseError(err, resp.Response)
859	}
860	errType := CloudError{raw: string(body)}
861	if err := resp.UnmarshalAsJSON(&errType); err != nil {
862		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
863	}
864	return azcore.NewResponseError(&errType, resp.Response)
865}
866
867// BeginStartPacketCapture - Starts packet capture on virtual network gateway connection in the specified resource group.
868// If the operation fails it returns the *Error error type.
869func (client *VirtualNetworkGatewayConnectionsClient) BeginStartPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginStartPacketCaptureOptions) (StringPollerResponse, error) {
870	resp, err := client.startPacketCapture(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
871	if err != nil {
872		return StringPollerResponse{}, err
873	}
874	result := StringPollerResponse{
875		RawResponse: resp.Response,
876	}
877	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.StartPacketCapture", "location", resp, client.con.Pipeline(), client.startPacketCaptureHandleError)
878	if err != nil {
879		return StringPollerResponse{}, err
880	}
881	poller := &stringPoller{
882		pt: pt,
883	}
884	result.Poller = poller
885	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (StringResponse, error) {
886		return poller.pollUntilDone(ctx, frequency)
887	}
888	return result, nil
889}
890
891// ResumeStartPacketCapture creates a new StringPoller from the specified resume token.
892// token - The value must come from a previous call to StringPoller.ResumeToken().
893func (client *VirtualNetworkGatewayConnectionsClient) ResumeStartPacketCapture(ctx context.Context, token string) (StringPollerResponse, error) {
894	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.StartPacketCapture", token, client.con.Pipeline(), client.startPacketCaptureHandleError)
895	if err != nil {
896		return StringPollerResponse{}, err
897	}
898	poller := &stringPoller{
899		pt: pt,
900	}
901	resp, err := poller.Poll(ctx)
902	if err != nil {
903		return StringPollerResponse{}, err
904	}
905	result := StringPollerResponse{
906		RawResponse: resp,
907	}
908	result.Poller = poller
909	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (StringResponse, error) {
910		return poller.pollUntilDone(ctx, frequency)
911	}
912	return result, nil
913}
914
915// StartPacketCapture - Starts packet capture on virtual network gateway connection in the specified resource group.
916// If the operation fails it returns the *Error error type.
917func (client *VirtualNetworkGatewayConnectionsClient) startPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginStartPacketCaptureOptions) (*azcore.Response, error) {
918	req, err := client.startPacketCaptureCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
919	if err != nil {
920		return nil, err
921	}
922	resp, err := client.con.Pipeline().Do(req)
923	if err != nil {
924		return nil, err
925	}
926	if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) {
927		return nil, client.startPacketCaptureHandleError(resp)
928	}
929	return resp, nil
930}
931
932// startPacketCaptureCreateRequest creates the StartPacketCapture request.
933func (client *VirtualNetworkGatewayConnectionsClient) startPacketCaptureCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsBeginStartPacketCaptureOptions) (*azcore.Request, error) {
934	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/startPacketCapture"
935	if resourceGroupName == "" {
936		return nil, errors.New("parameter resourceGroupName cannot be empty")
937	}
938	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
939	if virtualNetworkGatewayConnectionName == "" {
940		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
941	}
942	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
943	if client.subscriptionID == "" {
944		return nil, errors.New("parameter client.subscriptionID cannot be empty")
945	}
946	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
947	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
948	if err != nil {
949		return nil, err
950	}
951	req.Telemetry(telemetryInfo)
952	reqQP := req.URL.Query()
953	reqQP.Set("api-version", "2021-02-01")
954	req.URL.RawQuery = reqQP.Encode()
955	req.Header.Set("Accept", "application/json")
956	if options != nil && options.Parameters != nil {
957		return req, req.MarshalAsJSON(*options.Parameters)
958	}
959	return req, nil
960}
961
962// startPacketCaptureHandleError handles the StartPacketCapture error response.
963func (client *VirtualNetworkGatewayConnectionsClient) startPacketCaptureHandleError(resp *azcore.Response) error {
964	body, err := resp.Payload()
965	if err != nil {
966		return azcore.NewResponseError(err, resp.Response)
967	}
968	errType := Error{raw: string(body)}
969	if err := resp.UnmarshalAsJSON(&errType); err != nil {
970		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
971	}
972	return azcore.NewResponseError(&errType, resp.Response)
973}
974
975// BeginStopPacketCapture - Stops packet capture on virtual network gateway connection in the specified resource group.
976// If the operation fails it returns the *Error error type.
977func (client *VirtualNetworkGatewayConnectionsClient) BeginStopPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VPNPacketCaptureStopParameters, options *VirtualNetworkGatewayConnectionsBeginStopPacketCaptureOptions) (StringPollerResponse, error) {
978	resp, err := client.stopPacketCapture(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
979	if err != nil {
980		return StringPollerResponse{}, err
981	}
982	result := StringPollerResponse{
983		RawResponse: resp.Response,
984	}
985	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.StopPacketCapture", "location", resp, client.con.Pipeline(), client.stopPacketCaptureHandleError)
986	if err != nil {
987		return StringPollerResponse{}, err
988	}
989	poller := &stringPoller{
990		pt: pt,
991	}
992	result.Poller = poller
993	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (StringResponse, error) {
994		return poller.pollUntilDone(ctx, frequency)
995	}
996	return result, nil
997}
998
999// ResumeStopPacketCapture creates a new StringPoller from the specified resume token.
1000// token - The value must come from a previous call to StringPoller.ResumeToken().
1001func (client *VirtualNetworkGatewayConnectionsClient) ResumeStopPacketCapture(ctx context.Context, token string) (StringPollerResponse, error) {
1002	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.StopPacketCapture", token, client.con.Pipeline(), client.stopPacketCaptureHandleError)
1003	if err != nil {
1004		return StringPollerResponse{}, err
1005	}
1006	poller := &stringPoller{
1007		pt: pt,
1008	}
1009	resp, err := poller.Poll(ctx)
1010	if err != nil {
1011		return StringPollerResponse{}, err
1012	}
1013	result := StringPollerResponse{
1014		RawResponse: resp,
1015	}
1016	result.Poller = poller
1017	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (StringResponse, error) {
1018		return poller.pollUntilDone(ctx, frequency)
1019	}
1020	return result, nil
1021}
1022
1023// StopPacketCapture - Stops packet capture on virtual network gateway connection in the specified resource group.
1024// If the operation fails it returns the *Error error type.
1025func (client *VirtualNetworkGatewayConnectionsClient) stopPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VPNPacketCaptureStopParameters, options *VirtualNetworkGatewayConnectionsBeginStopPacketCaptureOptions) (*azcore.Response, error) {
1026	req, err := client.stopPacketCaptureCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
1027	if err != nil {
1028		return nil, err
1029	}
1030	resp, err := client.con.Pipeline().Do(req)
1031	if err != nil {
1032		return nil, err
1033	}
1034	if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) {
1035		return nil, client.stopPacketCaptureHandleError(resp)
1036	}
1037	return resp, nil
1038}
1039
1040// stopPacketCaptureCreateRequest creates the StopPacketCapture request.
1041func (client *VirtualNetworkGatewayConnectionsClient) stopPacketCaptureCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VPNPacketCaptureStopParameters, options *VirtualNetworkGatewayConnectionsBeginStopPacketCaptureOptions) (*azcore.Request, error) {
1042	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/stopPacketCapture"
1043	if resourceGroupName == "" {
1044		return nil, errors.New("parameter resourceGroupName cannot be empty")
1045	}
1046	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
1047	if virtualNetworkGatewayConnectionName == "" {
1048		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
1049	}
1050	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
1051	if client.subscriptionID == "" {
1052		return nil, errors.New("parameter client.subscriptionID cannot be empty")
1053	}
1054	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
1055	req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath))
1056	if err != nil {
1057		return nil, err
1058	}
1059	req.Telemetry(telemetryInfo)
1060	reqQP := req.URL.Query()
1061	reqQP.Set("api-version", "2021-02-01")
1062	req.URL.RawQuery = reqQP.Encode()
1063	req.Header.Set("Accept", "application/json")
1064	return req, req.MarshalAsJSON(parameters)
1065}
1066
1067// stopPacketCaptureHandleError handles the StopPacketCapture error response.
1068func (client *VirtualNetworkGatewayConnectionsClient) stopPacketCaptureHandleError(resp *azcore.Response) error {
1069	body, err := resp.Payload()
1070	if err != nil {
1071		return azcore.NewResponseError(err, resp.Response)
1072	}
1073	errType := Error{raw: string(body)}
1074	if err := resp.UnmarshalAsJSON(&errType); err != nil {
1075		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
1076	}
1077	return azcore.NewResponseError(&errType, resp.Response)
1078}
1079
1080// BeginUpdateTags - Updates a virtual network gateway connection tags.
1081// If the operation fails it returns the *CloudError error type.
1082func (client *VirtualNetworkGatewayConnectionsClient) BeginUpdateTags(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters TagsObject, options *VirtualNetworkGatewayConnectionsBeginUpdateTagsOptions) (VirtualNetworkGatewayConnectionPollerResponse, error) {
1083	resp, err := client.updateTags(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
1084	if err != nil {
1085		return VirtualNetworkGatewayConnectionPollerResponse{}, err
1086	}
1087	result := VirtualNetworkGatewayConnectionPollerResponse{
1088		RawResponse: resp.Response,
1089	}
1090	pt, err := armcore.NewLROPoller("VirtualNetworkGatewayConnectionsClient.UpdateTags", "azure-async-operation", resp, client.con.Pipeline(), client.updateTagsHandleError)
1091	if err != nil {
1092		return VirtualNetworkGatewayConnectionPollerResponse{}, err
1093	}
1094	poller := &virtualNetworkGatewayConnectionPoller{
1095		pt: pt,
1096	}
1097	result.Poller = poller
1098	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VirtualNetworkGatewayConnectionResponse, error) {
1099		return poller.pollUntilDone(ctx, frequency)
1100	}
1101	return result, nil
1102}
1103
1104// ResumeUpdateTags creates a new VirtualNetworkGatewayConnectionPoller from the specified resume token.
1105// token - The value must come from a previous call to VirtualNetworkGatewayConnectionPoller.ResumeToken().
1106func (client *VirtualNetworkGatewayConnectionsClient) ResumeUpdateTags(ctx context.Context, token string) (VirtualNetworkGatewayConnectionPollerResponse, error) {
1107	pt, err := armcore.NewLROPollerFromResumeToken("VirtualNetworkGatewayConnectionsClient.UpdateTags", token, client.con.Pipeline(), client.updateTagsHandleError)
1108	if err != nil {
1109		return VirtualNetworkGatewayConnectionPollerResponse{}, err
1110	}
1111	poller := &virtualNetworkGatewayConnectionPoller{
1112		pt: pt,
1113	}
1114	resp, err := poller.Poll(ctx)
1115	if err != nil {
1116		return VirtualNetworkGatewayConnectionPollerResponse{}, err
1117	}
1118	result := VirtualNetworkGatewayConnectionPollerResponse{
1119		RawResponse: resp,
1120	}
1121	result.Poller = poller
1122	result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VirtualNetworkGatewayConnectionResponse, error) {
1123		return poller.pollUntilDone(ctx, frequency)
1124	}
1125	return result, nil
1126}
1127
1128// UpdateTags - Updates a virtual network gateway connection tags.
1129// If the operation fails it returns the *CloudError error type.
1130func (client *VirtualNetworkGatewayConnectionsClient) updateTags(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters TagsObject, options *VirtualNetworkGatewayConnectionsBeginUpdateTagsOptions) (*azcore.Response, error) {
1131	req, err := client.updateTagsCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
1132	if err != nil {
1133		return nil, err
1134	}
1135	resp, err := client.con.Pipeline().Do(req)
1136	if err != nil {
1137		return nil, err
1138	}
1139	if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) {
1140		return nil, client.updateTagsHandleError(resp)
1141	}
1142	return resp, nil
1143}
1144
1145// updateTagsCreateRequest creates the UpdateTags request.
1146func (client *VirtualNetworkGatewayConnectionsClient) updateTagsCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters TagsObject, options *VirtualNetworkGatewayConnectionsBeginUpdateTagsOptions) (*azcore.Request, error) {
1147	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"
1148	if resourceGroupName == "" {
1149		return nil, errors.New("parameter resourceGroupName cannot be empty")
1150	}
1151	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
1152	if virtualNetworkGatewayConnectionName == "" {
1153		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
1154	}
1155	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
1156	if client.subscriptionID == "" {
1157		return nil, errors.New("parameter client.subscriptionID cannot be empty")
1158	}
1159	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
1160	req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath))
1161	if err != nil {
1162		return nil, err
1163	}
1164	req.Telemetry(telemetryInfo)
1165	reqQP := req.URL.Query()
1166	reqQP.Set("api-version", "2021-02-01")
1167	req.URL.RawQuery = reqQP.Encode()
1168	req.Header.Set("Accept", "application/json")
1169	return req, req.MarshalAsJSON(parameters)
1170}
1171
1172// updateTagsHandleError handles the UpdateTags error response.
1173func (client *VirtualNetworkGatewayConnectionsClient) updateTagsHandleError(resp *azcore.Response) error {
1174	body, err := resp.Payload()
1175	if err != nil {
1176		return azcore.NewResponseError(err, resp.Response)
1177	}
1178	errType := CloudError{raw: string(body)}
1179	if err := resp.UnmarshalAsJSON(&errType); err != nil {
1180		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
1181	}
1182	return azcore.NewResponseError(&errType, resp.Response)
1183}
1184