1package network
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//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"github.com/Azure/go-autorest/autorest"
12	"github.com/Azure/go-autorest/autorest/azure"
13	"github.com/Azure/go-autorest/tracing"
14	"net/http"
15)
16
17// AvailablePrivateEndpointTypesClient is the network Client
18type AvailablePrivateEndpointTypesClient struct {
19	BaseClient
20}
21
22// NewAvailablePrivateEndpointTypesClient creates an instance of the AvailablePrivateEndpointTypesClient client.
23func NewAvailablePrivateEndpointTypesClient(subscriptionID string) AvailablePrivateEndpointTypesClient {
24	return NewAvailablePrivateEndpointTypesClientWithBaseURI(DefaultBaseURI, subscriptionID)
25}
26
27// NewAvailablePrivateEndpointTypesClientWithBaseURI creates an instance of the AvailablePrivateEndpointTypesClient
28// client using a custom endpoint.  Use this when interacting with an Azure cloud that uses a non-standard base URI
29// (sovereign clouds, Azure stack).
30func NewAvailablePrivateEndpointTypesClientWithBaseURI(baseURI string, subscriptionID string) AvailablePrivateEndpointTypesClient {
31	return AvailablePrivateEndpointTypesClient{NewWithBaseURI(baseURI, subscriptionID)}
32}
33
34// List returns all of the resource types that can be linked to a Private Endpoint in this subscription in this region.
35// Parameters:
36// location - the location of the domain name.
37func (client AvailablePrivateEndpointTypesClient) List(ctx context.Context, location string) (result AvailablePrivateEndpointTypesResultPage, err error) {
38	if tracing.IsEnabled() {
39		ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesClient.List")
40		defer func() {
41			sc := -1
42			if result.apetr.Response.Response != nil {
43				sc = result.apetr.Response.Response.StatusCode
44			}
45			tracing.EndSpan(ctx, sc, err)
46		}()
47	}
48	result.fn = client.listNextResults
49	req, err := client.ListPreparer(ctx, location)
50	if err != nil {
51		err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "List", nil, "Failure preparing request")
52		return
53	}
54
55	resp, err := client.ListSender(req)
56	if err != nil {
57		result.apetr.Response = autorest.Response{Response: resp}
58		err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "List", resp, "Failure sending request")
59		return
60	}
61
62	result.apetr, err = client.ListResponder(resp)
63	if err != nil {
64		err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "List", resp, "Failure responding to request")
65		return
66	}
67	if result.apetr.hasNextLink() && result.apetr.IsEmpty() {
68		err = result.NextWithContext(ctx)
69		return
70	}
71
72	return
73}
74
75// ListPreparer prepares the List request.
76func (client AvailablePrivateEndpointTypesClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) {
77	pathParameters := map[string]interface{}{
78		"location":       autorest.Encode("path", location),
79		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
80	}
81
82	const APIVersion = "2020-06-01"
83	queryParameters := map[string]interface{}{
84		"api-version": APIVersion,
85	}
86
87	preparer := autorest.CreatePreparer(
88		autorest.AsGet(),
89		autorest.WithBaseURL(client.BaseURI),
90		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes", pathParameters),
91		autorest.WithQueryParameters(queryParameters))
92	return preparer.Prepare((&http.Request{}).WithContext(ctx))
93}
94
95// ListSender sends the List request. The method will close the
96// http.Response Body if it receives an error.
97func (client AvailablePrivateEndpointTypesClient) ListSender(req *http.Request) (*http.Response, error) {
98	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
99}
100
101// ListResponder handles the response to the List request. The method always
102// closes the http.Response Body.
103func (client AvailablePrivateEndpointTypesClient) ListResponder(resp *http.Response) (result AvailablePrivateEndpointTypesResult, err error) {
104	err = autorest.Respond(
105		resp,
106		azure.WithErrorUnlessStatusCode(http.StatusOK),
107		autorest.ByUnmarshallingJSON(&result),
108		autorest.ByClosing())
109	result.Response = autorest.Response{Response: resp}
110	return
111}
112
113// listNextResults retrieves the next set of results, if any.
114func (client AvailablePrivateEndpointTypesClient) listNextResults(ctx context.Context, lastResults AvailablePrivateEndpointTypesResult) (result AvailablePrivateEndpointTypesResult, err error) {
115	req, err := lastResults.availablePrivateEndpointTypesResultPreparer(ctx)
116	if err != nil {
117		return result, autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listNextResults", nil, "Failure preparing next results request")
118	}
119	if req == nil {
120		return
121	}
122	resp, err := client.ListSender(req)
123	if err != nil {
124		result.Response = autorest.Response{Response: resp}
125		return result, autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listNextResults", resp, "Failure sending next results request")
126	}
127	result, err = client.ListResponder(resp)
128	if err != nil {
129		err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listNextResults", resp, "Failure responding to next results request")
130	}
131	return
132}
133
134// ListComplete enumerates all values, automatically crossing page boundaries as required.
135func (client AvailablePrivateEndpointTypesClient) ListComplete(ctx context.Context, location string) (result AvailablePrivateEndpointTypesResultIterator, err error) {
136	if tracing.IsEnabled() {
137		ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesClient.List")
138		defer func() {
139			sc := -1
140			if result.Response().Response.Response != nil {
141				sc = result.page.Response().Response.Response.StatusCode
142			}
143			tracing.EndSpan(ctx, sc, err)
144		}()
145	}
146	result.page, err = client.List(ctx, location)
147	return
148}
149
150// ListByResourceGroup returns all of the resource types that can be linked to a Private Endpoint in this subscription
151// in this region.
152// Parameters:
153// location - the location of the domain name.
154// resourceGroupName - the name of the resource group.
155func (client AvailablePrivateEndpointTypesClient) ListByResourceGroup(ctx context.Context, location string, resourceGroupName string) (result AvailablePrivateEndpointTypesResultPage, err error) {
156	if tracing.IsEnabled() {
157		ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesClient.ListByResourceGroup")
158		defer func() {
159			sc := -1
160			if result.apetr.Response.Response != nil {
161				sc = result.apetr.Response.Response.StatusCode
162			}
163			tracing.EndSpan(ctx, sc, err)
164		}()
165	}
166	result.fn = client.listByResourceGroupNextResults
167	req, err := client.ListByResourceGroupPreparer(ctx, location, resourceGroupName)
168	if err != nil {
169		err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "ListByResourceGroup", nil, "Failure preparing request")
170		return
171	}
172
173	resp, err := client.ListByResourceGroupSender(req)
174	if err != nil {
175		result.apetr.Response = autorest.Response{Response: resp}
176		err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "ListByResourceGroup", resp, "Failure sending request")
177		return
178	}
179
180	result.apetr, err = client.ListByResourceGroupResponder(resp)
181	if err != nil {
182		err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "ListByResourceGroup", resp, "Failure responding to request")
183		return
184	}
185	if result.apetr.hasNextLink() && result.apetr.IsEmpty() {
186		err = result.NextWithContext(ctx)
187		return
188	}
189
190	return
191}
192
193// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
194func (client AvailablePrivateEndpointTypesClient) ListByResourceGroupPreparer(ctx context.Context, location string, resourceGroupName string) (*http.Request, error) {
195	pathParameters := map[string]interface{}{
196		"location":          autorest.Encode("path", location),
197		"resourceGroupName": autorest.Encode("path", resourceGroupName),
198		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
199	}
200
201	const APIVersion = "2020-06-01"
202	queryParameters := map[string]interface{}{
203		"api-version": APIVersion,
204	}
205
206	preparer := autorest.CreatePreparer(
207		autorest.AsGet(),
208		autorest.WithBaseURL(client.BaseURI),
209		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes", pathParameters),
210		autorest.WithQueryParameters(queryParameters))
211	return preparer.Prepare((&http.Request{}).WithContext(ctx))
212}
213
214// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
215// http.Response Body if it receives an error.
216func (client AvailablePrivateEndpointTypesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
217	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
218}
219
220// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
221// closes the http.Response Body.
222func (client AvailablePrivateEndpointTypesClient) ListByResourceGroupResponder(resp *http.Response) (result AvailablePrivateEndpointTypesResult, err error) {
223	err = autorest.Respond(
224		resp,
225		azure.WithErrorUnlessStatusCode(http.StatusOK),
226		autorest.ByUnmarshallingJSON(&result),
227		autorest.ByClosing())
228	result.Response = autorest.Response{Response: resp}
229	return
230}
231
232// listByResourceGroupNextResults retrieves the next set of results, if any.
233func (client AvailablePrivateEndpointTypesClient) listByResourceGroupNextResults(ctx context.Context, lastResults AvailablePrivateEndpointTypesResult) (result AvailablePrivateEndpointTypesResult, err error) {
234	req, err := lastResults.availablePrivateEndpointTypesResultPreparer(ctx)
235	if err != nil {
236		return result, autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
237	}
238	if req == nil {
239		return
240	}
241	resp, err := client.ListByResourceGroupSender(req)
242	if err != nil {
243		result.Response = autorest.Response{Response: resp}
244		return result, autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
245	}
246	result, err = client.ListByResourceGroupResponder(resp)
247	if err != nil {
248		err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
249	}
250	return
251}
252
253// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
254func (client AvailablePrivateEndpointTypesClient) ListByResourceGroupComplete(ctx context.Context, location string, resourceGroupName string) (result AvailablePrivateEndpointTypesResultIterator, err error) {
255	if tracing.IsEnabled() {
256		ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesClient.ListByResourceGroup")
257		defer func() {
258			sc := -1
259			if result.Response().Response.Response != nil {
260				sc = result.page.Response().Response.Response.StatusCode
261			}
262			tracing.EndSpan(ctx, sc, err)
263		}()
264	}
265	result.page, err = client.ListByResourceGroup(ctx, location, resourceGroupName)
266	return
267}
268