1package web
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// ProviderClient is the webSite Management Client
18type ProviderClient struct {
19	BaseClient
20}
21
22// NewProviderClient creates an instance of the ProviderClient client.
23func NewProviderClient(subscriptionID string) ProviderClient {
24	return NewProviderClientWithBaseURI(DefaultBaseURI, subscriptionID)
25}
26
27// NewProviderClientWithBaseURI creates an instance of the ProviderClient client using a custom endpoint.  Use this
28// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
29func NewProviderClientWithBaseURI(baseURI string, subscriptionID string) ProviderClient {
30	return ProviderClient{NewWithBaseURI(baseURI, subscriptionID)}
31}
32
33// GetAvailableStacks description for Get available application frameworks and their versions
34func (client ProviderClient) GetAvailableStacks(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionPage, err error) {
35	if tracing.IsEnabled() {
36		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacks")
37		defer func() {
38			sc := -1
39			if result.asc.Response.Response != nil {
40				sc = result.asc.Response.Response.StatusCode
41			}
42			tracing.EndSpan(ctx, sc, err)
43		}()
44	}
45	result.fn = client.getAvailableStacksNextResults
46	req, err := client.GetAvailableStacksPreparer(ctx, osTypeSelected)
47	if err != nil {
48		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", nil, "Failure preparing request")
49		return
50	}
51
52	resp, err := client.GetAvailableStacksSender(req)
53	if err != nil {
54		result.asc.Response = autorest.Response{Response: resp}
55		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", resp, "Failure sending request")
56		return
57	}
58
59	result.asc, err = client.GetAvailableStacksResponder(resp)
60	if err != nil {
61		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", resp, "Failure responding to request")
62		return
63	}
64	if result.asc.hasNextLink() && result.asc.IsEmpty() {
65		err = result.NextWithContext(ctx)
66		return
67	}
68
69	return
70}
71
72// GetAvailableStacksPreparer prepares the GetAvailableStacks request.
73func (client ProviderClient) GetAvailableStacksPreparer(ctx context.Context, osTypeSelected string) (*http.Request, error) {
74	const APIVersion = "2021-01-15"
75	queryParameters := map[string]interface{}{
76		"api-version": APIVersion,
77	}
78	if len(string(osTypeSelected)) > 0 {
79		queryParameters["osTypeSelected"] = autorest.Encode("query", osTypeSelected)
80	}
81
82	preparer := autorest.CreatePreparer(
83		autorest.AsGet(),
84		autorest.WithBaseURL(client.BaseURI),
85		autorest.WithPath("/providers/Microsoft.Web/availableStacks"),
86		autorest.WithQueryParameters(queryParameters))
87	return preparer.Prepare((&http.Request{}).WithContext(ctx))
88}
89
90// GetAvailableStacksSender sends the GetAvailableStacks request. The method will close the
91// http.Response Body if it receives an error.
92func (client ProviderClient) GetAvailableStacksSender(req *http.Request) (*http.Response, error) {
93	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
94}
95
96// GetAvailableStacksResponder handles the response to the GetAvailableStacks request. The method always
97// closes the http.Response Body.
98func (client ProviderClient) GetAvailableStacksResponder(resp *http.Response) (result ApplicationStackCollection, err error) {
99	err = autorest.Respond(
100		resp,
101		azure.WithErrorUnlessStatusCode(http.StatusOK),
102		autorest.ByUnmarshallingJSON(&result),
103		autorest.ByClosing())
104	result.Response = autorest.Response{Response: resp}
105	return
106}
107
108// getAvailableStacksNextResults retrieves the next set of results, if any.
109func (client ProviderClient) getAvailableStacksNextResults(ctx context.Context, lastResults ApplicationStackCollection) (result ApplicationStackCollection, err error) {
110	req, err := lastResults.applicationStackCollectionPreparer(ctx)
111	if err != nil {
112		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksNextResults", nil, "Failure preparing next results request")
113	}
114	if req == nil {
115		return
116	}
117	resp, err := client.GetAvailableStacksSender(req)
118	if err != nil {
119		result.Response = autorest.Response{Response: resp}
120		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksNextResults", resp, "Failure sending next results request")
121	}
122	result, err = client.GetAvailableStacksResponder(resp)
123	if err != nil {
124		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksNextResults", resp, "Failure responding to next results request")
125	}
126	return
127}
128
129// GetAvailableStacksComplete enumerates all values, automatically crossing page boundaries as required.
130func (client ProviderClient) GetAvailableStacksComplete(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionIterator, err error) {
131	if tracing.IsEnabled() {
132		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacks")
133		defer func() {
134			sc := -1
135			if result.Response().Response.Response != nil {
136				sc = result.page.Response().Response.Response.StatusCode
137			}
138			tracing.EndSpan(ctx, sc, err)
139		}()
140	}
141	result.page, err = client.GetAvailableStacks(ctx, osTypeSelected)
142	return
143}
144
145// GetAvailableStacksOnPrem description for Get available application frameworks and their versions
146func (client ProviderClient) GetAvailableStacksOnPrem(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionPage, err error) {
147	if tracing.IsEnabled() {
148		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacksOnPrem")
149		defer func() {
150			sc := -1
151			if result.asc.Response.Response != nil {
152				sc = result.asc.Response.Response.StatusCode
153			}
154			tracing.EndSpan(ctx, sc, err)
155		}()
156	}
157	result.fn = client.getAvailableStacksOnPremNextResults
158	req, err := client.GetAvailableStacksOnPremPreparer(ctx, osTypeSelected)
159	if err != nil {
160		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacksOnPrem", nil, "Failure preparing request")
161		return
162	}
163
164	resp, err := client.GetAvailableStacksOnPremSender(req)
165	if err != nil {
166		result.asc.Response = autorest.Response{Response: resp}
167		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacksOnPrem", resp, "Failure sending request")
168		return
169	}
170
171	result.asc, err = client.GetAvailableStacksOnPremResponder(resp)
172	if err != nil {
173		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacksOnPrem", resp, "Failure responding to request")
174		return
175	}
176	if result.asc.hasNextLink() && result.asc.IsEmpty() {
177		err = result.NextWithContext(ctx)
178		return
179	}
180
181	return
182}
183
184// GetAvailableStacksOnPremPreparer prepares the GetAvailableStacksOnPrem request.
185func (client ProviderClient) GetAvailableStacksOnPremPreparer(ctx context.Context, osTypeSelected string) (*http.Request, error) {
186	pathParameters := map[string]interface{}{
187		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
188	}
189
190	const APIVersion = "2021-01-15"
191	queryParameters := map[string]interface{}{
192		"api-version": APIVersion,
193	}
194	if len(string(osTypeSelected)) > 0 {
195		queryParameters["osTypeSelected"] = autorest.Encode("query", osTypeSelected)
196	}
197
198	preparer := autorest.CreatePreparer(
199		autorest.AsGet(),
200		autorest.WithBaseURL(client.BaseURI),
201		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Web/availableStacks", pathParameters),
202		autorest.WithQueryParameters(queryParameters))
203	return preparer.Prepare((&http.Request{}).WithContext(ctx))
204}
205
206// GetAvailableStacksOnPremSender sends the GetAvailableStacksOnPrem request. The method will close the
207// http.Response Body if it receives an error.
208func (client ProviderClient) GetAvailableStacksOnPremSender(req *http.Request) (*http.Response, error) {
209	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
210}
211
212// GetAvailableStacksOnPremResponder handles the response to the GetAvailableStacksOnPrem request. The method always
213// closes the http.Response Body.
214func (client ProviderClient) GetAvailableStacksOnPremResponder(resp *http.Response) (result ApplicationStackCollection, err error) {
215	err = autorest.Respond(
216		resp,
217		azure.WithErrorUnlessStatusCode(http.StatusOK),
218		autorest.ByUnmarshallingJSON(&result),
219		autorest.ByClosing())
220	result.Response = autorest.Response{Response: resp}
221	return
222}
223
224// getAvailableStacksOnPremNextResults retrieves the next set of results, if any.
225func (client ProviderClient) getAvailableStacksOnPremNextResults(ctx context.Context, lastResults ApplicationStackCollection) (result ApplicationStackCollection, err error) {
226	req, err := lastResults.applicationStackCollectionPreparer(ctx)
227	if err != nil {
228		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", nil, "Failure preparing next results request")
229	}
230	if req == nil {
231		return
232	}
233	resp, err := client.GetAvailableStacksOnPremSender(req)
234	if err != nil {
235		result.Response = autorest.Response{Response: resp}
236		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", resp, "Failure sending next results request")
237	}
238	result, err = client.GetAvailableStacksOnPremResponder(resp)
239	if err != nil {
240		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", resp, "Failure responding to next results request")
241	}
242	return
243}
244
245// GetAvailableStacksOnPremComplete enumerates all values, automatically crossing page boundaries as required.
246func (client ProviderClient) GetAvailableStacksOnPremComplete(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionIterator, err error) {
247	if tracing.IsEnabled() {
248		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacksOnPrem")
249		defer func() {
250			sc := -1
251			if result.Response().Response.Response != nil {
252				sc = result.page.Response().Response.Response.StatusCode
253			}
254			tracing.EndSpan(ctx, sc, err)
255		}()
256	}
257	result.page, err = client.GetAvailableStacksOnPrem(ctx, osTypeSelected)
258	return
259}
260
261// GetFunctionAppStacks description for Get available Function app frameworks and their versions
262// Parameters:
263// stackOsType - stack OS Type
264func (client ProviderClient) GetFunctionAppStacks(ctx context.Context, stackOsType string) (result FunctionAppStackCollectionPage, err error) {
265	if tracing.IsEnabled() {
266		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetFunctionAppStacks")
267		defer func() {
268			sc := -1
269			if result.fasc.Response.Response != nil {
270				sc = result.fasc.Response.Response.StatusCode
271			}
272			tracing.EndSpan(ctx, sc, err)
273		}()
274	}
275	result.fn = client.getFunctionAppStacksNextResults
276	req, err := client.GetFunctionAppStacksPreparer(ctx, stackOsType)
277	if err != nil {
278		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetFunctionAppStacks", nil, "Failure preparing request")
279		return
280	}
281
282	resp, err := client.GetFunctionAppStacksSender(req)
283	if err != nil {
284		result.fasc.Response = autorest.Response{Response: resp}
285		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetFunctionAppStacks", resp, "Failure sending request")
286		return
287	}
288
289	result.fasc, err = client.GetFunctionAppStacksResponder(resp)
290	if err != nil {
291		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetFunctionAppStacks", resp, "Failure responding to request")
292		return
293	}
294	if result.fasc.hasNextLink() && result.fasc.IsEmpty() {
295		err = result.NextWithContext(ctx)
296		return
297	}
298
299	return
300}
301
302// GetFunctionAppStacksPreparer prepares the GetFunctionAppStacks request.
303func (client ProviderClient) GetFunctionAppStacksPreparer(ctx context.Context, stackOsType string) (*http.Request, error) {
304	const APIVersion = "2021-01-15"
305	queryParameters := map[string]interface{}{
306		"api-version": APIVersion,
307	}
308	if len(string(stackOsType)) > 0 {
309		queryParameters["stackOsType"] = autorest.Encode("query", stackOsType)
310	}
311
312	preparer := autorest.CreatePreparer(
313		autorest.AsGet(),
314		autorest.WithBaseURL(client.BaseURI),
315		autorest.WithPath("/providers/Microsoft.Web/functionAppStacks"),
316		autorest.WithQueryParameters(queryParameters))
317	return preparer.Prepare((&http.Request{}).WithContext(ctx))
318}
319
320// GetFunctionAppStacksSender sends the GetFunctionAppStacks request. The method will close the
321// http.Response Body if it receives an error.
322func (client ProviderClient) GetFunctionAppStacksSender(req *http.Request) (*http.Response, error) {
323	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
324}
325
326// GetFunctionAppStacksResponder handles the response to the GetFunctionAppStacks request. The method always
327// closes the http.Response Body.
328func (client ProviderClient) GetFunctionAppStacksResponder(resp *http.Response) (result FunctionAppStackCollection, err error) {
329	err = autorest.Respond(
330		resp,
331		azure.WithErrorUnlessStatusCode(http.StatusOK),
332		autorest.ByUnmarshallingJSON(&result),
333		autorest.ByClosing())
334	result.Response = autorest.Response{Response: resp}
335	return
336}
337
338// getFunctionAppStacksNextResults retrieves the next set of results, if any.
339func (client ProviderClient) getFunctionAppStacksNextResults(ctx context.Context, lastResults FunctionAppStackCollection) (result FunctionAppStackCollection, err error) {
340	req, err := lastResults.functionAppStackCollectionPreparer(ctx)
341	if err != nil {
342		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getFunctionAppStacksNextResults", nil, "Failure preparing next results request")
343	}
344	if req == nil {
345		return
346	}
347	resp, err := client.GetFunctionAppStacksSender(req)
348	if err != nil {
349		result.Response = autorest.Response{Response: resp}
350		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getFunctionAppStacksNextResults", resp, "Failure sending next results request")
351	}
352	result, err = client.GetFunctionAppStacksResponder(resp)
353	if err != nil {
354		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getFunctionAppStacksNextResults", resp, "Failure responding to next results request")
355	}
356	return
357}
358
359// GetFunctionAppStacksComplete enumerates all values, automatically crossing page boundaries as required.
360func (client ProviderClient) GetFunctionAppStacksComplete(ctx context.Context, stackOsType string) (result FunctionAppStackCollectionIterator, err error) {
361	if tracing.IsEnabled() {
362		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetFunctionAppStacks")
363		defer func() {
364			sc := -1
365			if result.Response().Response.Response != nil {
366				sc = result.page.Response().Response.Response.StatusCode
367			}
368			tracing.EndSpan(ctx, sc, err)
369		}()
370	}
371	result.page, err = client.GetFunctionAppStacks(ctx, stackOsType)
372	return
373}
374
375// GetFunctionAppStacksForLocation description for Get available Function app frameworks and their versions for
376// location
377// Parameters:
378// location - function App stack location.
379// stackOsType - stack OS Type
380func (client ProviderClient) GetFunctionAppStacksForLocation(ctx context.Context, location string, stackOsType string) (result FunctionAppStackCollectionPage, err error) {
381	if tracing.IsEnabled() {
382		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetFunctionAppStacksForLocation")
383		defer func() {
384			sc := -1
385			if result.fasc.Response.Response != nil {
386				sc = result.fasc.Response.Response.StatusCode
387			}
388			tracing.EndSpan(ctx, sc, err)
389		}()
390	}
391	result.fn = client.getFunctionAppStacksForLocationNextResults
392	req, err := client.GetFunctionAppStacksForLocationPreparer(ctx, location, stackOsType)
393	if err != nil {
394		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetFunctionAppStacksForLocation", nil, "Failure preparing request")
395		return
396	}
397
398	resp, err := client.GetFunctionAppStacksForLocationSender(req)
399	if err != nil {
400		result.fasc.Response = autorest.Response{Response: resp}
401		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetFunctionAppStacksForLocation", resp, "Failure sending request")
402		return
403	}
404
405	result.fasc, err = client.GetFunctionAppStacksForLocationResponder(resp)
406	if err != nil {
407		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetFunctionAppStacksForLocation", resp, "Failure responding to request")
408		return
409	}
410	if result.fasc.hasNextLink() && result.fasc.IsEmpty() {
411		err = result.NextWithContext(ctx)
412		return
413	}
414
415	return
416}
417
418// GetFunctionAppStacksForLocationPreparer prepares the GetFunctionAppStacksForLocation request.
419func (client ProviderClient) GetFunctionAppStacksForLocationPreparer(ctx context.Context, location string, stackOsType string) (*http.Request, error) {
420	pathParameters := map[string]interface{}{
421		"location": autorest.Encode("path", location),
422	}
423
424	const APIVersion = "2021-01-15"
425	queryParameters := map[string]interface{}{
426		"api-version": APIVersion,
427	}
428	if len(string(stackOsType)) > 0 {
429		queryParameters["stackOsType"] = autorest.Encode("query", stackOsType)
430	}
431
432	preparer := autorest.CreatePreparer(
433		autorest.AsGet(),
434		autorest.WithBaseURL(client.BaseURI),
435		autorest.WithPathParameters("/providers/Microsoft.Web/locations/{location}/functionAppStacks", pathParameters),
436		autorest.WithQueryParameters(queryParameters))
437	return preparer.Prepare((&http.Request{}).WithContext(ctx))
438}
439
440// GetFunctionAppStacksForLocationSender sends the GetFunctionAppStacksForLocation request. The method will close the
441// http.Response Body if it receives an error.
442func (client ProviderClient) GetFunctionAppStacksForLocationSender(req *http.Request) (*http.Response, error) {
443	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
444}
445
446// GetFunctionAppStacksForLocationResponder handles the response to the GetFunctionAppStacksForLocation request. The method always
447// closes the http.Response Body.
448func (client ProviderClient) GetFunctionAppStacksForLocationResponder(resp *http.Response) (result FunctionAppStackCollection, err error) {
449	err = autorest.Respond(
450		resp,
451		azure.WithErrorUnlessStatusCode(http.StatusOK),
452		autorest.ByUnmarshallingJSON(&result),
453		autorest.ByClosing())
454	result.Response = autorest.Response{Response: resp}
455	return
456}
457
458// getFunctionAppStacksForLocationNextResults retrieves the next set of results, if any.
459func (client ProviderClient) getFunctionAppStacksForLocationNextResults(ctx context.Context, lastResults FunctionAppStackCollection) (result FunctionAppStackCollection, err error) {
460	req, err := lastResults.functionAppStackCollectionPreparer(ctx)
461	if err != nil {
462		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getFunctionAppStacksForLocationNextResults", nil, "Failure preparing next results request")
463	}
464	if req == nil {
465		return
466	}
467	resp, err := client.GetFunctionAppStacksForLocationSender(req)
468	if err != nil {
469		result.Response = autorest.Response{Response: resp}
470		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getFunctionAppStacksForLocationNextResults", resp, "Failure sending next results request")
471	}
472	result, err = client.GetFunctionAppStacksForLocationResponder(resp)
473	if err != nil {
474		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getFunctionAppStacksForLocationNextResults", resp, "Failure responding to next results request")
475	}
476	return
477}
478
479// GetFunctionAppStacksForLocationComplete enumerates all values, automatically crossing page boundaries as required.
480func (client ProviderClient) GetFunctionAppStacksForLocationComplete(ctx context.Context, location string, stackOsType string) (result FunctionAppStackCollectionIterator, err error) {
481	if tracing.IsEnabled() {
482		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetFunctionAppStacksForLocation")
483		defer func() {
484			sc := -1
485			if result.Response().Response.Response != nil {
486				sc = result.page.Response().Response.Response.StatusCode
487			}
488			tracing.EndSpan(ctx, sc, err)
489		}()
490	}
491	result.page, err = client.GetFunctionAppStacksForLocation(ctx, location, stackOsType)
492	return
493}
494
495// GetWebAppStacks description for Get available Web app frameworks and their versions
496// Parameters:
497// stackOsType - stack OS Type
498func (client ProviderClient) GetWebAppStacks(ctx context.Context, stackOsType string) (result AppStackCollectionPage, err error) {
499	if tracing.IsEnabled() {
500		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetWebAppStacks")
501		defer func() {
502			sc := -1
503			if result.asc.Response.Response != nil {
504				sc = result.asc.Response.Response.StatusCode
505			}
506			tracing.EndSpan(ctx, sc, err)
507		}()
508	}
509	result.fn = client.getWebAppStacksNextResults
510	req, err := client.GetWebAppStacksPreparer(ctx, stackOsType)
511	if err != nil {
512		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetWebAppStacks", nil, "Failure preparing request")
513		return
514	}
515
516	resp, err := client.GetWebAppStacksSender(req)
517	if err != nil {
518		result.asc.Response = autorest.Response{Response: resp}
519		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetWebAppStacks", resp, "Failure sending request")
520		return
521	}
522
523	result.asc, err = client.GetWebAppStacksResponder(resp)
524	if err != nil {
525		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetWebAppStacks", resp, "Failure responding to request")
526		return
527	}
528	if result.asc.hasNextLink() && result.asc.IsEmpty() {
529		err = result.NextWithContext(ctx)
530		return
531	}
532
533	return
534}
535
536// GetWebAppStacksPreparer prepares the GetWebAppStacks request.
537func (client ProviderClient) GetWebAppStacksPreparer(ctx context.Context, stackOsType string) (*http.Request, error) {
538	const APIVersion = "2021-01-15"
539	queryParameters := map[string]interface{}{
540		"api-version": APIVersion,
541	}
542	if len(string(stackOsType)) > 0 {
543		queryParameters["stackOsType"] = autorest.Encode("query", stackOsType)
544	}
545
546	preparer := autorest.CreatePreparer(
547		autorest.AsGet(),
548		autorest.WithBaseURL(client.BaseURI),
549		autorest.WithPath("/providers/Microsoft.Web/webAppStacks"),
550		autorest.WithQueryParameters(queryParameters))
551	return preparer.Prepare((&http.Request{}).WithContext(ctx))
552}
553
554// GetWebAppStacksSender sends the GetWebAppStacks request. The method will close the
555// http.Response Body if it receives an error.
556func (client ProviderClient) GetWebAppStacksSender(req *http.Request) (*http.Response, error) {
557	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
558}
559
560// GetWebAppStacksResponder handles the response to the GetWebAppStacks request. The method always
561// closes the http.Response Body.
562func (client ProviderClient) GetWebAppStacksResponder(resp *http.Response) (result AppStackCollection, err error) {
563	err = autorest.Respond(
564		resp,
565		azure.WithErrorUnlessStatusCode(http.StatusOK),
566		autorest.ByUnmarshallingJSON(&result),
567		autorest.ByClosing())
568	result.Response = autorest.Response{Response: resp}
569	return
570}
571
572// getWebAppStacksNextResults retrieves the next set of results, if any.
573func (client ProviderClient) getWebAppStacksNextResults(ctx context.Context, lastResults AppStackCollection) (result AppStackCollection, err error) {
574	req, err := lastResults.appStackCollectionPreparer(ctx)
575	if err != nil {
576		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getWebAppStacksNextResults", nil, "Failure preparing next results request")
577	}
578	if req == nil {
579		return
580	}
581	resp, err := client.GetWebAppStacksSender(req)
582	if err != nil {
583		result.Response = autorest.Response{Response: resp}
584		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getWebAppStacksNextResults", resp, "Failure sending next results request")
585	}
586	result, err = client.GetWebAppStacksResponder(resp)
587	if err != nil {
588		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getWebAppStacksNextResults", resp, "Failure responding to next results request")
589	}
590	return
591}
592
593// GetWebAppStacksComplete enumerates all values, automatically crossing page boundaries as required.
594func (client ProviderClient) GetWebAppStacksComplete(ctx context.Context, stackOsType string) (result AppStackCollectionIterator, err error) {
595	if tracing.IsEnabled() {
596		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetWebAppStacks")
597		defer func() {
598			sc := -1
599			if result.Response().Response.Response != nil {
600				sc = result.page.Response().Response.Response.StatusCode
601			}
602			tracing.EndSpan(ctx, sc, err)
603		}()
604	}
605	result.page, err = client.GetWebAppStacks(ctx, stackOsType)
606	return
607}
608
609// GetWebAppStacksForLocation description for Get available Web app frameworks and their versions for location
610// Parameters:
611// location - web App stack location.
612// stackOsType - stack OS Type
613func (client ProviderClient) GetWebAppStacksForLocation(ctx context.Context, location string, stackOsType string) (result AppStackCollectionPage, err error) {
614	if tracing.IsEnabled() {
615		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetWebAppStacksForLocation")
616		defer func() {
617			sc := -1
618			if result.asc.Response.Response != nil {
619				sc = result.asc.Response.Response.StatusCode
620			}
621			tracing.EndSpan(ctx, sc, err)
622		}()
623	}
624	result.fn = client.getWebAppStacksForLocationNextResults
625	req, err := client.GetWebAppStacksForLocationPreparer(ctx, location, stackOsType)
626	if err != nil {
627		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetWebAppStacksForLocation", nil, "Failure preparing request")
628		return
629	}
630
631	resp, err := client.GetWebAppStacksForLocationSender(req)
632	if err != nil {
633		result.asc.Response = autorest.Response{Response: resp}
634		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetWebAppStacksForLocation", resp, "Failure sending request")
635		return
636	}
637
638	result.asc, err = client.GetWebAppStacksForLocationResponder(resp)
639	if err != nil {
640		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetWebAppStacksForLocation", resp, "Failure responding to request")
641		return
642	}
643	if result.asc.hasNextLink() && result.asc.IsEmpty() {
644		err = result.NextWithContext(ctx)
645		return
646	}
647
648	return
649}
650
651// GetWebAppStacksForLocationPreparer prepares the GetWebAppStacksForLocation request.
652func (client ProviderClient) GetWebAppStacksForLocationPreparer(ctx context.Context, location string, stackOsType string) (*http.Request, error) {
653	pathParameters := map[string]interface{}{
654		"location": autorest.Encode("path", location),
655	}
656
657	const APIVersion = "2021-01-15"
658	queryParameters := map[string]interface{}{
659		"api-version": APIVersion,
660	}
661	if len(string(stackOsType)) > 0 {
662		queryParameters["stackOsType"] = autorest.Encode("query", stackOsType)
663	}
664
665	preparer := autorest.CreatePreparer(
666		autorest.AsGet(),
667		autorest.WithBaseURL(client.BaseURI),
668		autorest.WithPathParameters("/providers/Microsoft.Web/locations/{location}/webAppStacks", pathParameters),
669		autorest.WithQueryParameters(queryParameters))
670	return preparer.Prepare((&http.Request{}).WithContext(ctx))
671}
672
673// GetWebAppStacksForLocationSender sends the GetWebAppStacksForLocation request. The method will close the
674// http.Response Body if it receives an error.
675func (client ProviderClient) GetWebAppStacksForLocationSender(req *http.Request) (*http.Response, error) {
676	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
677}
678
679// GetWebAppStacksForLocationResponder handles the response to the GetWebAppStacksForLocation request. The method always
680// closes the http.Response Body.
681func (client ProviderClient) GetWebAppStacksForLocationResponder(resp *http.Response) (result AppStackCollection, err error) {
682	err = autorest.Respond(
683		resp,
684		azure.WithErrorUnlessStatusCode(http.StatusOK),
685		autorest.ByUnmarshallingJSON(&result),
686		autorest.ByClosing())
687	result.Response = autorest.Response{Response: resp}
688	return
689}
690
691// getWebAppStacksForLocationNextResults retrieves the next set of results, if any.
692func (client ProviderClient) getWebAppStacksForLocationNextResults(ctx context.Context, lastResults AppStackCollection) (result AppStackCollection, err error) {
693	req, err := lastResults.appStackCollectionPreparer(ctx)
694	if err != nil {
695		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getWebAppStacksForLocationNextResults", nil, "Failure preparing next results request")
696	}
697	if req == nil {
698		return
699	}
700	resp, err := client.GetWebAppStacksForLocationSender(req)
701	if err != nil {
702		result.Response = autorest.Response{Response: resp}
703		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getWebAppStacksForLocationNextResults", resp, "Failure sending next results request")
704	}
705	result, err = client.GetWebAppStacksForLocationResponder(resp)
706	if err != nil {
707		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getWebAppStacksForLocationNextResults", resp, "Failure responding to next results request")
708	}
709	return
710}
711
712// GetWebAppStacksForLocationComplete enumerates all values, automatically crossing page boundaries as required.
713func (client ProviderClient) GetWebAppStacksForLocationComplete(ctx context.Context, location string, stackOsType string) (result AppStackCollectionIterator, err error) {
714	if tracing.IsEnabled() {
715		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetWebAppStacksForLocation")
716		defer func() {
717			sc := -1
718			if result.Response().Response.Response != nil {
719				sc = result.page.Response().Response.Response.StatusCode
720			}
721			tracing.EndSpan(ctx, sc, err)
722		}()
723	}
724	result.page, err = client.GetWebAppStacksForLocation(ctx, location, stackOsType)
725	return
726}
727
728// ListOperations description for Gets all available operations for the Microsoft.Web resource provider. Also exposes
729// resource metric definitions
730func (client ProviderClient) ListOperations(ctx context.Context) (result CsmOperationCollectionPage, err error) {
731	if tracing.IsEnabled() {
732		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.ListOperations")
733		defer func() {
734			sc := -1
735			if result.coc.Response.Response != nil {
736				sc = result.coc.Response.Response.StatusCode
737			}
738			tracing.EndSpan(ctx, sc, err)
739		}()
740	}
741	result.fn = client.listOperationsNextResults
742	req, err := client.ListOperationsPreparer(ctx)
743	if err != nil {
744		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", nil, "Failure preparing request")
745		return
746	}
747
748	resp, err := client.ListOperationsSender(req)
749	if err != nil {
750		result.coc.Response = autorest.Response{Response: resp}
751		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", resp, "Failure sending request")
752		return
753	}
754
755	result.coc, err = client.ListOperationsResponder(resp)
756	if err != nil {
757		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", resp, "Failure responding to request")
758		return
759	}
760	if result.coc.hasNextLink() && result.coc.IsEmpty() {
761		err = result.NextWithContext(ctx)
762		return
763	}
764
765	return
766}
767
768// ListOperationsPreparer prepares the ListOperations request.
769func (client ProviderClient) ListOperationsPreparer(ctx context.Context) (*http.Request, error) {
770	const APIVersion = "2021-01-15"
771	queryParameters := map[string]interface{}{
772		"api-version": APIVersion,
773	}
774
775	preparer := autorest.CreatePreparer(
776		autorest.AsGet(),
777		autorest.WithBaseURL(client.BaseURI),
778		autorest.WithPath("/providers/Microsoft.Web/operations"),
779		autorest.WithQueryParameters(queryParameters))
780	return preparer.Prepare((&http.Request{}).WithContext(ctx))
781}
782
783// ListOperationsSender sends the ListOperations request. The method will close the
784// http.Response Body if it receives an error.
785func (client ProviderClient) ListOperationsSender(req *http.Request) (*http.Response, error) {
786	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
787}
788
789// ListOperationsResponder handles the response to the ListOperations request. The method always
790// closes the http.Response Body.
791func (client ProviderClient) ListOperationsResponder(resp *http.Response) (result CsmOperationCollection, err error) {
792	err = autorest.Respond(
793		resp,
794		azure.WithErrorUnlessStatusCode(http.StatusOK),
795		autorest.ByUnmarshallingJSON(&result),
796		autorest.ByClosing())
797	result.Response = autorest.Response{Response: resp}
798	return
799}
800
801// listOperationsNextResults retrieves the next set of results, if any.
802func (client ProviderClient) listOperationsNextResults(ctx context.Context, lastResults CsmOperationCollection) (result CsmOperationCollection, err error) {
803	req, err := lastResults.csmOperationCollectionPreparer(ctx)
804	if err != nil {
805		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", nil, "Failure preparing next results request")
806	}
807	if req == nil {
808		return
809	}
810	resp, err := client.ListOperationsSender(req)
811	if err != nil {
812		result.Response = autorest.Response{Response: resp}
813		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", resp, "Failure sending next results request")
814	}
815	result, err = client.ListOperationsResponder(resp)
816	if err != nil {
817		err = autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", resp, "Failure responding to next results request")
818	}
819	return
820}
821
822// ListOperationsComplete enumerates all values, automatically crossing page boundaries as required.
823func (client ProviderClient) ListOperationsComplete(ctx context.Context) (result CsmOperationCollectionIterator, err error) {
824	if tracing.IsEnabled() {
825		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.ListOperations")
826		defer func() {
827			sc := -1
828			if result.Response().Response.Response != nil {
829				sc = result.page.Response().Response.Response.StatusCode
830			}
831			tracing.EndSpan(ctx, sc, err)
832		}()
833	}
834	result.page, err = client.ListOperations(ctx)
835	return
836}
837