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 = "2019-08-01"
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 = "2019-08-01"
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// ListOperations description for Gets all available operations for the Microsoft.Web resource provider. Also exposes
262// resource metric definitions
263func (client ProviderClient) ListOperations(ctx context.Context) (result CsmOperationCollectionPage, err error) {
264	if tracing.IsEnabled() {
265		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.ListOperations")
266		defer func() {
267			sc := -1
268			if result.coc.Response.Response != nil {
269				sc = result.coc.Response.Response.StatusCode
270			}
271			tracing.EndSpan(ctx, sc, err)
272		}()
273	}
274	result.fn = client.listOperationsNextResults
275	req, err := client.ListOperationsPreparer(ctx)
276	if err != nil {
277		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", nil, "Failure preparing request")
278		return
279	}
280
281	resp, err := client.ListOperationsSender(req)
282	if err != nil {
283		result.coc.Response = autorest.Response{Response: resp}
284		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", resp, "Failure sending request")
285		return
286	}
287
288	result.coc, err = client.ListOperationsResponder(resp)
289	if err != nil {
290		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", resp, "Failure responding to request")
291		return
292	}
293	if result.coc.hasNextLink() && result.coc.IsEmpty() {
294		err = result.NextWithContext(ctx)
295		return
296	}
297
298	return
299}
300
301// ListOperationsPreparer prepares the ListOperations request.
302func (client ProviderClient) ListOperationsPreparer(ctx context.Context) (*http.Request, error) {
303	const APIVersion = "2019-08-01"
304	queryParameters := map[string]interface{}{
305		"api-version": APIVersion,
306	}
307
308	preparer := autorest.CreatePreparer(
309		autorest.AsGet(),
310		autorest.WithBaseURL(client.BaseURI),
311		autorest.WithPath("/providers/Microsoft.Web/operations"),
312		autorest.WithQueryParameters(queryParameters))
313	return preparer.Prepare((&http.Request{}).WithContext(ctx))
314}
315
316// ListOperationsSender sends the ListOperations request. The method will close the
317// http.Response Body if it receives an error.
318func (client ProviderClient) ListOperationsSender(req *http.Request) (*http.Response, error) {
319	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
320}
321
322// ListOperationsResponder handles the response to the ListOperations request. The method always
323// closes the http.Response Body.
324func (client ProviderClient) ListOperationsResponder(resp *http.Response) (result CsmOperationCollection, err error) {
325	err = autorest.Respond(
326		resp,
327		azure.WithErrorUnlessStatusCode(http.StatusOK),
328		autorest.ByUnmarshallingJSON(&result),
329		autorest.ByClosing())
330	result.Response = autorest.Response{Response: resp}
331	return
332}
333
334// listOperationsNextResults retrieves the next set of results, if any.
335func (client ProviderClient) listOperationsNextResults(ctx context.Context, lastResults CsmOperationCollection) (result CsmOperationCollection, err error) {
336	req, err := lastResults.csmOperationCollectionPreparer(ctx)
337	if err != nil {
338		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", nil, "Failure preparing next results request")
339	}
340	if req == nil {
341		return
342	}
343	resp, err := client.ListOperationsSender(req)
344	if err != nil {
345		result.Response = autorest.Response{Response: resp}
346		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", resp, "Failure sending next results request")
347	}
348	result, err = client.ListOperationsResponder(resp)
349	if err != nil {
350		err = autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", resp, "Failure responding to next results request")
351	}
352	return
353}
354
355// ListOperationsComplete enumerates all values, automatically crossing page boundaries as required.
356func (client ProviderClient) ListOperationsComplete(ctx context.Context) (result CsmOperationCollectionIterator, err error) {
357	if tracing.IsEnabled() {
358		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.ListOperations")
359		defer func() {
360			sc := -1
361			if result.Response().Response.Response != nil {
362				sc = result.page.Response().Response.Response.StatusCode
363			}
364			tracing.EndSpan(ctx, sc, err)
365		}()
366	}
367	result.page, err = client.ListOperations(ctx)
368	return
369}
370