1package network
2
3// Copyright (c) Microsoft and contributors.  All rights reserved.
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13//
14// See the License for the specific language governing permissions and
15// limitations under the License.
16//
17// Code generated by Microsoft (R) AutoRest Code Generator.
18// Changes may cause incorrect behavior and will be lost if the code is regenerated.
19
20import (
21	"context"
22	"github.com/Azure/go-autorest/autorest"
23	"github.com/Azure/go-autorest/autorest/azure"
24	"github.com/Azure/go-autorest/tracing"
25	"net/http"
26)
27
28// ApplicationSecurityGroupsClient is the network Client
29type ApplicationSecurityGroupsClient struct {
30	BaseClient
31}
32
33// NewApplicationSecurityGroupsClient creates an instance of the ApplicationSecurityGroupsClient client.
34func NewApplicationSecurityGroupsClient(subscriptionID string) ApplicationSecurityGroupsClient {
35	return NewApplicationSecurityGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID)
36}
37
38// NewApplicationSecurityGroupsClientWithBaseURI creates an instance of the ApplicationSecurityGroupsClient client.
39func NewApplicationSecurityGroupsClientWithBaseURI(baseURI string, subscriptionID string) ApplicationSecurityGroupsClient {
40	return ApplicationSecurityGroupsClient{NewWithBaseURI(baseURI, subscriptionID)}
41}
42
43// CreateOrUpdate creates or updates an application security group.
44// Parameters:
45// resourceGroupName - the name of the resource group.
46// applicationSecurityGroupName - the name of the application security group.
47// parameters - parameters supplied to the create or update ApplicationSecurityGroup operation.
48func (client ApplicationSecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string, parameters ApplicationSecurityGroup) (result ApplicationSecurityGroupsCreateOrUpdateFuture, err error) {
49	if tracing.IsEnabled() {
50		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.CreateOrUpdate")
51		defer func() {
52			sc := -1
53			if result.Response() != nil {
54				sc = result.Response().StatusCode
55			}
56			tracing.EndSpan(ctx, sc, err)
57		}()
58	}
59	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, applicationSecurityGroupName, parameters)
60	if err != nil {
61		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "CreateOrUpdate", nil, "Failure preparing request")
62		return
63	}
64
65	result, err = client.CreateOrUpdateSender(req)
66	if err != nil {
67		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
68		return
69	}
70
71	return
72}
73
74// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
75func (client ApplicationSecurityGroupsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string, parameters ApplicationSecurityGroup) (*http.Request, error) {
76	pathParameters := map[string]interface{}{
77		"applicationSecurityGroupName": autorest.Encode("path", applicationSecurityGroupName),
78		"resourceGroupName":            autorest.Encode("path", resourceGroupName),
79		"subscriptionId":               autorest.Encode("path", client.SubscriptionID),
80	}
81
82	const APIVersion = "2018-10-01"
83	queryParameters := map[string]interface{}{
84		"api-version": APIVersion,
85	}
86
87	preparer := autorest.CreatePreparer(
88		autorest.AsContentType("application/json; charset=utf-8"),
89		autorest.AsPut(),
90		autorest.WithBaseURL(client.BaseURI),
91		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", pathParameters),
92		autorest.WithJSON(parameters),
93		autorest.WithQueryParameters(queryParameters))
94	return preparer.Prepare((&http.Request{}).WithContext(ctx))
95}
96
97// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
98// http.Response Body if it receives an error.
99func (client ApplicationSecurityGroupsClient) CreateOrUpdateSender(req *http.Request) (future ApplicationSecurityGroupsCreateOrUpdateFuture, err error) {
100	var resp *http.Response
101	resp, err = autorest.SendWithSender(client, req,
102		azure.DoRetryWithRegistration(client.Client))
103	if err != nil {
104		return
105	}
106	future.Future, err = azure.NewFutureFromResponse(resp)
107	return
108}
109
110// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
111// closes the http.Response Body.
112func (client ApplicationSecurityGroupsClient) CreateOrUpdateResponder(resp *http.Response) (result ApplicationSecurityGroup, err error) {
113	err = autorest.Respond(
114		resp,
115		client.ByInspecting(),
116		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
117		autorest.ByUnmarshallingJSON(&result),
118		autorest.ByClosing())
119	result.Response = autorest.Response{Response: resp}
120	return
121}
122
123// Delete deletes the specified application security group.
124// Parameters:
125// resourceGroupName - the name of the resource group.
126// applicationSecurityGroupName - the name of the application security group.
127func (client ApplicationSecurityGroupsClient) Delete(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string) (result ApplicationSecurityGroupsDeleteFuture, err error) {
128	if tracing.IsEnabled() {
129		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.Delete")
130		defer func() {
131			sc := -1
132			if result.Response() != nil {
133				sc = result.Response().StatusCode
134			}
135			tracing.EndSpan(ctx, sc, err)
136		}()
137	}
138	req, err := client.DeletePreparer(ctx, resourceGroupName, applicationSecurityGroupName)
139	if err != nil {
140		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Delete", nil, "Failure preparing request")
141		return
142	}
143
144	result, err = client.DeleteSender(req)
145	if err != nil {
146		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Delete", result.Response(), "Failure sending request")
147		return
148	}
149
150	return
151}
152
153// DeletePreparer prepares the Delete request.
154func (client ApplicationSecurityGroupsClient) DeletePreparer(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string) (*http.Request, error) {
155	pathParameters := map[string]interface{}{
156		"applicationSecurityGroupName": autorest.Encode("path", applicationSecurityGroupName),
157		"resourceGroupName":            autorest.Encode("path", resourceGroupName),
158		"subscriptionId":               autorest.Encode("path", client.SubscriptionID),
159	}
160
161	const APIVersion = "2018-10-01"
162	queryParameters := map[string]interface{}{
163		"api-version": APIVersion,
164	}
165
166	preparer := autorest.CreatePreparer(
167		autorest.AsDelete(),
168		autorest.WithBaseURL(client.BaseURI),
169		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", pathParameters),
170		autorest.WithQueryParameters(queryParameters))
171	return preparer.Prepare((&http.Request{}).WithContext(ctx))
172}
173
174// DeleteSender sends the Delete request. The method will close the
175// http.Response Body if it receives an error.
176func (client ApplicationSecurityGroupsClient) DeleteSender(req *http.Request) (future ApplicationSecurityGroupsDeleteFuture, err error) {
177	var resp *http.Response
178	resp, err = autorest.SendWithSender(client, req,
179		azure.DoRetryWithRegistration(client.Client))
180	if err != nil {
181		return
182	}
183	future.Future, err = azure.NewFutureFromResponse(resp)
184	return
185}
186
187// DeleteResponder handles the response to the Delete request. The method always
188// closes the http.Response Body.
189func (client ApplicationSecurityGroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
190	err = autorest.Respond(
191		resp,
192		client.ByInspecting(),
193		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
194		autorest.ByClosing())
195	result.Response = resp
196	return
197}
198
199// Get gets information about the specified application security group.
200// Parameters:
201// resourceGroupName - the name of the resource group.
202// applicationSecurityGroupName - the name of the application security group.
203func (client ApplicationSecurityGroupsClient) Get(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string) (result ApplicationSecurityGroup, err error) {
204	if tracing.IsEnabled() {
205		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.Get")
206		defer func() {
207			sc := -1
208			if result.Response.Response != nil {
209				sc = result.Response.Response.StatusCode
210			}
211			tracing.EndSpan(ctx, sc, err)
212		}()
213	}
214	req, err := client.GetPreparer(ctx, resourceGroupName, applicationSecurityGroupName)
215	if err != nil {
216		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Get", nil, "Failure preparing request")
217		return
218	}
219
220	resp, err := client.GetSender(req)
221	if err != nil {
222		result.Response = autorest.Response{Response: resp}
223		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Get", resp, "Failure sending request")
224		return
225	}
226
227	result, err = client.GetResponder(resp)
228	if err != nil {
229		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Get", resp, "Failure responding to request")
230	}
231
232	return
233}
234
235// GetPreparer prepares the Get request.
236func (client ApplicationSecurityGroupsClient) GetPreparer(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string) (*http.Request, error) {
237	pathParameters := map[string]interface{}{
238		"applicationSecurityGroupName": autorest.Encode("path", applicationSecurityGroupName),
239		"resourceGroupName":            autorest.Encode("path", resourceGroupName),
240		"subscriptionId":               autorest.Encode("path", client.SubscriptionID),
241	}
242
243	const APIVersion = "2018-10-01"
244	queryParameters := map[string]interface{}{
245		"api-version": APIVersion,
246	}
247
248	preparer := autorest.CreatePreparer(
249		autorest.AsGet(),
250		autorest.WithBaseURL(client.BaseURI),
251		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", pathParameters),
252		autorest.WithQueryParameters(queryParameters))
253	return preparer.Prepare((&http.Request{}).WithContext(ctx))
254}
255
256// GetSender sends the Get request. The method will close the
257// http.Response Body if it receives an error.
258func (client ApplicationSecurityGroupsClient) GetSender(req *http.Request) (*http.Response, error) {
259	return autorest.SendWithSender(client, req,
260		azure.DoRetryWithRegistration(client.Client))
261}
262
263// GetResponder handles the response to the Get request. The method always
264// closes the http.Response Body.
265func (client ApplicationSecurityGroupsClient) GetResponder(resp *http.Response) (result ApplicationSecurityGroup, err error) {
266	err = autorest.Respond(
267		resp,
268		client.ByInspecting(),
269		azure.WithErrorUnlessStatusCode(http.StatusOK),
270		autorest.ByUnmarshallingJSON(&result),
271		autorest.ByClosing())
272	result.Response = autorest.Response{Response: resp}
273	return
274}
275
276// List gets all the application security groups in a resource group.
277// Parameters:
278// resourceGroupName - the name of the resource group.
279func (client ApplicationSecurityGroupsClient) List(ctx context.Context, resourceGroupName string) (result ApplicationSecurityGroupListResultPage, err error) {
280	if tracing.IsEnabled() {
281		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.List")
282		defer func() {
283			sc := -1
284			if result.asglr.Response.Response != nil {
285				sc = result.asglr.Response.Response.StatusCode
286			}
287			tracing.EndSpan(ctx, sc, err)
288		}()
289	}
290	result.fn = client.listNextResults
291	req, err := client.ListPreparer(ctx, resourceGroupName)
292	if err != nil {
293		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "List", nil, "Failure preparing request")
294		return
295	}
296
297	resp, err := client.ListSender(req)
298	if err != nil {
299		result.asglr.Response = autorest.Response{Response: resp}
300		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "List", resp, "Failure sending request")
301		return
302	}
303
304	result.asglr, err = client.ListResponder(resp)
305	if err != nil {
306		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "List", resp, "Failure responding to request")
307	}
308
309	return
310}
311
312// ListPreparer prepares the List request.
313func (client ApplicationSecurityGroupsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
314	pathParameters := map[string]interface{}{
315		"resourceGroupName": autorest.Encode("path", resourceGroupName),
316		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
317	}
318
319	const APIVersion = "2018-10-01"
320	queryParameters := map[string]interface{}{
321		"api-version": APIVersion,
322	}
323
324	preparer := autorest.CreatePreparer(
325		autorest.AsGet(),
326		autorest.WithBaseURL(client.BaseURI),
327		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups", pathParameters),
328		autorest.WithQueryParameters(queryParameters))
329	return preparer.Prepare((&http.Request{}).WithContext(ctx))
330}
331
332// ListSender sends the List request. The method will close the
333// http.Response Body if it receives an error.
334func (client ApplicationSecurityGroupsClient) ListSender(req *http.Request) (*http.Response, error) {
335	return autorest.SendWithSender(client, req,
336		azure.DoRetryWithRegistration(client.Client))
337}
338
339// ListResponder handles the response to the List request. The method always
340// closes the http.Response Body.
341func (client ApplicationSecurityGroupsClient) ListResponder(resp *http.Response) (result ApplicationSecurityGroupListResult, err error) {
342	err = autorest.Respond(
343		resp,
344		client.ByInspecting(),
345		azure.WithErrorUnlessStatusCode(http.StatusOK),
346		autorest.ByUnmarshallingJSON(&result),
347		autorest.ByClosing())
348	result.Response = autorest.Response{Response: resp}
349	return
350}
351
352// listNextResults retrieves the next set of results, if any.
353func (client ApplicationSecurityGroupsClient) listNextResults(ctx context.Context, lastResults ApplicationSecurityGroupListResult) (result ApplicationSecurityGroupListResult, err error) {
354	req, err := lastResults.applicationSecurityGroupListResultPreparer(ctx)
355	if err != nil {
356		return result, autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listNextResults", nil, "Failure preparing next results request")
357	}
358	if req == nil {
359		return
360	}
361	resp, err := client.ListSender(req)
362	if err != nil {
363		result.Response = autorest.Response{Response: resp}
364		return result, autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listNextResults", resp, "Failure sending next results request")
365	}
366	result, err = client.ListResponder(resp)
367	if err != nil {
368		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listNextResults", resp, "Failure responding to next results request")
369	}
370	return
371}
372
373// ListComplete enumerates all values, automatically crossing page boundaries as required.
374func (client ApplicationSecurityGroupsClient) ListComplete(ctx context.Context, resourceGroupName string) (result ApplicationSecurityGroupListResultIterator, err error) {
375	if tracing.IsEnabled() {
376		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.List")
377		defer func() {
378			sc := -1
379			if result.Response().Response.Response != nil {
380				sc = result.page.Response().Response.Response.StatusCode
381			}
382			tracing.EndSpan(ctx, sc, err)
383		}()
384	}
385	result.page, err = client.List(ctx, resourceGroupName)
386	return
387}
388
389// ListAll gets all application security groups in a subscription.
390func (client ApplicationSecurityGroupsClient) ListAll(ctx context.Context) (result ApplicationSecurityGroupListResultPage, err error) {
391	if tracing.IsEnabled() {
392		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.ListAll")
393		defer func() {
394			sc := -1
395			if result.asglr.Response.Response != nil {
396				sc = result.asglr.Response.Response.StatusCode
397			}
398			tracing.EndSpan(ctx, sc, err)
399		}()
400	}
401	result.fn = client.listAllNextResults
402	req, err := client.ListAllPreparer(ctx)
403	if err != nil {
404		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "ListAll", nil, "Failure preparing request")
405		return
406	}
407
408	resp, err := client.ListAllSender(req)
409	if err != nil {
410		result.asglr.Response = autorest.Response{Response: resp}
411		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "ListAll", resp, "Failure sending request")
412		return
413	}
414
415	result.asglr, err = client.ListAllResponder(resp)
416	if err != nil {
417		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "ListAll", resp, "Failure responding to request")
418	}
419
420	return
421}
422
423// ListAllPreparer prepares the ListAll request.
424func (client ApplicationSecurityGroupsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
425	pathParameters := map[string]interface{}{
426		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
427	}
428
429	const APIVersion = "2018-10-01"
430	queryParameters := map[string]interface{}{
431		"api-version": APIVersion,
432	}
433
434	preparer := autorest.CreatePreparer(
435		autorest.AsGet(),
436		autorest.WithBaseURL(client.BaseURI),
437		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationSecurityGroups", pathParameters),
438		autorest.WithQueryParameters(queryParameters))
439	return preparer.Prepare((&http.Request{}).WithContext(ctx))
440}
441
442// ListAllSender sends the ListAll request. The method will close the
443// http.Response Body if it receives an error.
444func (client ApplicationSecurityGroupsClient) ListAllSender(req *http.Request) (*http.Response, error) {
445	return autorest.SendWithSender(client, req,
446		azure.DoRetryWithRegistration(client.Client))
447}
448
449// ListAllResponder handles the response to the ListAll request. The method always
450// closes the http.Response Body.
451func (client ApplicationSecurityGroupsClient) ListAllResponder(resp *http.Response) (result ApplicationSecurityGroupListResult, err error) {
452	err = autorest.Respond(
453		resp,
454		client.ByInspecting(),
455		azure.WithErrorUnlessStatusCode(http.StatusOK),
456		autorest.ByUnmarshallingJSON(&result),
457		autorest.ByClosing())
458	result.Response = autorest.Response{Response: resp}
459	return
460}
461
462// listAllNextResults retrieves the next set of results, if any.
463func (client ApplicationSecurityGroupsClient) listAllNextResults(ctx context.Context, lastResults ApplicationSecurityGroupListResult) (result ApplicationSecurityGroupListResult, err error) {
464	req, err := lastResults.applicationSecurityGroupListResultPreparer(ctx)
465	if err != nil {
466		return result, autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listAllNextResults", nil, "Failure preparing next results request")
467	}
468	if req == nil {
469		return
470	}
471	resp, err := client.ListAllSender(req)
472	if err != nil {
473		result.Response = autorest.Response{Response: resp}
474		return result, autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listAllNextResults", resp, "Failure sending next results request")
475	}
476	result, err = client.ListAllResponder(resp)
477	if err != nil {
478		err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listAllNextResults", resp, "Failure responding to next results request")
479	}
480	return
481}
482
483// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
484func (client ApplicationSecurityGroupsClient) ListAllComplete(ctx context.Context) (result ApplicationSecurityGroupListResultIterator, err error) {
485	if tracing.IsEnabled() {
486		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.ListAll")
487		defer func() {
488			sc := -1
489			if result.Response().Response.Response != nil {
490				sc = result.page.Response().Response.Response.StatusCode
491			}
492			tracing.EndSpan(ctx, sc, err)
493		}()
494	}
495	result.page, err = client.ListAll(ctx)
496	return
497}
498