1package web
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// ProviderClient is the webSite Management Client
29type ProviderClient struct {
30	BaseClient
31}
32
33// NewProviderClient creates an instance of the ProviderClient client.
34func NewProviderClient(subscriptionID string) ProviderClient {
35	return NewProviderClientWithBaseURI(DefaultBaseURI, subscriptionID)
36}
37
38// NewProviderClientWithBaseURI creates an instance of the ProviderClient client.
39func NewProviderClientWithBaseURI(baseURI string, subscriptionID string) ProviderClient {
40	return ProviderClient{NewWithBaseURI(baseURI, subscriptionID)}
41}
42
43// GetAvailableStacks get available application frameworks and their versions
44func (client ProviderClient) GetAvailableStacks(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionPage, err error) {
45	if tracing.IsEnabled() {
46		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacks")
47		defer func() {
48			sc := -1
49			if result.asc.Response.Response != nil {
50				sc = result.asc.Response.Response.StatusCode
51			}
52			tracing.EndSpan(ctx, sc, err)
53		}()
54	}
55	result.fn = client.getAvailableStacksNextResults
56	req, err := client.GetAvailableStacksPreparer(ctx, osTypeSelected)
57	if err != nil {
58		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", nil, "Failure preparing request")
59		return
60	}
61
62	resp, err := client.GetAvailableStacksSender(req)
63	if err != nil {
64		result.asc.Response = autorest.Response{Response: resp}
65		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", resp, "Failure sending request")
66		return
67	}
68
69	result.asc, err = client.GetAvailableStacksResponder(resp)
70	if err != nil {
71		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", resp, "Failure responding to request")
72	}
73
74	return
75}
76
77// GetAvailableStacksPreparer prepares the GetAvailableStacks request.
78func (client ProviderClient) GetAvailableStacksPreparer(ctx context.Context, osTypeSelected string) (*http.Request, error) {
79	const APIVersion = "2016-03-01"
80	queryParameters := map[string]interface{}{
81		"api-version": APIVersion,
82	}
83	if len(string(osTypeSelected)) > 0 {
84		queryParameters["osTypeSelected"] = autorest.Encode("query", osTypeSelected)
85	}
86
87	preparer := autorest.CreatePreparer(
88		autorest.AsGet(),
89		autorest.WithBaseURL(client.BaseURI),
90		autorest.WithPath("/providers/Microsoft.Web/availableStacks"),
91		autorest.WithQueryParameters(queryParameters))
92	return preparer.Prepare((&http.Request{}).WithContext(ctx))
93}
94
95// GetAvailableStacksSender sends the GetAvailableStacks request. The method will close the
96// http.Response Body if it receives an error.
97func (client ProviderClient) GetAvailableStacksSender(req *http.Request) (*http.Response, error) {
98	sd := autorest.GetSendDecorators(req.Context(), autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
99	return autorest.SendWithSender(client, req, sd...)
100}
101
102// GetAvailableStacksResponder handles the response to the GetAvailableStacks request. The method always
103// closes the http.Response Body.
104func (client ProviderClient) GetAvailableStacksResponder(resp *http.Response) (result ApplicationStackCollection, err error) {
105	err = autorest.Respond(
106		resp,
107		client.ByInspecting(),
108		azure.WithErrorUnlessStatusCode(http.StatusOK),
109		autorest.ByUnmarshallingJSON(&result),
110		autorest.ByClosing())
111	result.Response = autorest.Response{Response: resp}
112	return
113}
114
115// getAvailableStacksNextResults retrieves the next set of results, if any.
116func (client ProviderClient) getAvailableStacksNextResults(ctx context.Context, lastResults ApplicationStackCollection) (result ApplicationStackCollection, err error) {
117	req, err := lastResults.applicationStackCollectionPreparer(ctx)
118	if err != nil {
119		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksNextResults", nil, "Failure preparing next results request")
120	}
121	if req == nil {
122		return
123	}
124	resp, err := client.GetAvailableStacksSender(req)
125	if err != nil {
126		result.Response = autorest.Response{Response: resp}
127		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksNextResults", resp, "Failure sending next results request")
128	}
129	result, err = client.GetAvailableStacksResponder(resp)
130	if err != nil {
131		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksNextResults", resp, "Failure responding to next results request")
132	}
133	return
134}
135
136// GetAvailableStacksComplete enumerates all values, automatically crossing page boundaries as required.
137func (client ProviderClient) GetAvailableStacksComplete(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionIterator, err error) {
138	if tracing.IsEnabled() {
139		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacks")
140		defer func() {
141			sc := -1
142			if result.Response().Response.Response != nil {
143				sc = result.page.Response().Response.Response.StatusCode
144			}
145			tracing.EndSpan(ctx, sc, err)
146		}()
147	}
148	result.page, err = client.GetAvailableStacks(ctx, osTypeSelected)
149	return
150}
151
152// GetAvailableStacksOnPrem get available application frameworks and their versions
153func (client ProviderClient) GetAvailableStacksOnPrem(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionPage, err error) {
154	if tracing.IsEnabled() {
155		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacksOnPrem")
156		defer func() {
157			sc := -1
158			if result.asc.Response.Response != nil {
159				sc = result.asc.Response.Response.StatusCode
160			}
161			tracing.EndSpan(ctx, sc, err)
162		}()
163	}
164	result.fn = client.getAvailableStacksOnPremNextResults
165	req, err := client.GetAvailableStacksOnPremPreparer(ctx, osTypeSelected)
166	if err != nil {
167		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacksOnPrem", nil, "Failure preparing request")
168		return
169	}
170
171	resp, err := client.GetAvailableStacksOnPremSender(req)
172	if err != nil {
173		result.asc.Response = autorest.Response{Response: resp}
174		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacksOnPrem", resp, "Failure sending request")
175		return
176	}
177
178	result.asc, err = client.GetAvailableStacksOnPremResponder(resp)
179	if err != nil {
180		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacksOnPrem", resp, "Failure responding to request")
181	}
182
183	return
184}
185
186// GetAvailableStacksOnPremPreparer prepares the GetAvailableStacksOnPrem request.
187func (client ProviderClient) GetAvailableStacksOnPremPreparer(ctx context.Context, osTypeSelected string) (*http.Request, error) {
188	pathParameters := map[string]interface{}{
189		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
190	}
191
192	const APIVersion = "2016-03-01"
193	queryParameters := map[string]interface{}{
194		"api-version": APIVersion,
195	}
196	if len(string(osTypeSelected)) > 0 {
197		queryParameters["osTypeSelected"] = autorest.Encode("query", osTypeSelected)
198	}
199
200	preparer := autorest.CreatePreparer(
201		autorest.AsGet(),
202		autorest.WithBaseURL(client.BaseURI),
203		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Web/availableStacks", pathParameters),
204		autorest.WithQueryParameters(queryParameters))
205	return preparer.Prepare((&http.Request{}).WithContext(ctx))
206}
207
208// GetAvailableStacksOnPremSender sends the GetAvailableStacksOnPrem request. The method will close the
209// http.Response Body if it receives an error.
210func (client ProviderClient) GetAvailableStacksOnPremSender(req *http.Request) (*http.Response, error) {
211	sd := autorest.GetSendDecorators(req.Context(), azure.DoRetryWithRegistration(client.Client))
212	return autorest.SendWithSender(client, req, sd...)
213}
214
215// GetAvailableStacksOnPremResponder handles the response to the GetAvailableStacksOnPrem request. The method always
216// closes the http.Response Body.
217func (client ProviderClient) GetAvailableStacksOnPremResponder(resp *http.Response) (result ApplicationStackCollection, err error) {
218	err = autorest.Respond(
219		resp,
220		client.ByInspecting(),
221		azure.WithErrorUnlessStatusCode(http.StatusOK),
222		autorest.ByUnmarshallingJSON(&result),
223		autorest.ByClosing())
224	result.Response = autorest.Response{Response: resp}
225	return
226}
227
228// getAvailableStacksOnPremNextResults retrieves the next set of results, if any.
229func (client ProviderClient) getAvailableStacksOnPremNextResults(ctx context.Context, lastResults ApplicationStackCollection) (result ApplicationStackCollection, err error) {
230	req, err := lastResults.applicationStackCollectionPreparer(ctx)
231	if err != nil {
232		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", nil, "Failure preparing next results request")
233	}
234	if req == nil {
235		return
236	}
237	resp, err := client.GetAvailableStacksOnPremSender(req)
238	if err != nil {
239		result.Response = autorest.Response{Response: resp}
240		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", resp, "Failure sending next results request")
241	}
242	result, err = client.GetAvailableStacksOnPremResponder(resp)
243	if err != nil {
244		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", resp, "Failure responding to next results request")
245	}
246	return
247}
248
249// GetAvailableStacksOnPremComplete enumerates all values, automatically crossing page boundaries as required.
250func (client ProviderClient) GetAvailableStacksOnPremComplete(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionIterator, err error) {
251	if tracing.IsEnabled() {
252		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacksOnPrem")
253		defer func() {
254			sc := -1
255			if result.Response().Response.Response != nil {
256				sc = result.page.Response().Response.Response.StatusCode
257			}
258			tracing.EndSpan(ctx, sc, err)
259		}()
260	}
261	result.page, err = client.GetAvailableStacksOnPrem(ctx, osTypeSelected)
262	return
263}
264
265// ListOperations gets all available operations for the Microsoft.Web resource provider. Also exposes resource metric
266// definitions
267func (client ProviderClient) ListOperations(ctx context.Context) (result CsmOperationCollectionPage, err error) {
268	if tracing.IsEnabled() {
269		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.ListOperations")
270		defer func() {
271			sc := -1
272			if result.coc.Response.Response != nil {
273				sc = result.coc.Response.Response.StatusCode
274			}
275			tracing.EndSpan(ctx, sc, err)
276		}()
277	}
278	result.fn = client.listOperationsNextResults
279	req, err := client.ListOperationsPreparer(ctx)
280	if err != nil {
281		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", nil, "Failure preparing request")
282		return
283	}
284
285	resp, err := client.ListOperationsSender(req)
286	if err != nil {
287		result.coc.Response = autorest.Response{Response: resp}
288		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", resp, "Failure sending request")
289		return
290	}
291
292	result.coc, err = client.ListOperationsResponder(resp)
293	if err != nil {
294		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", resp, "Failure responding to request")
295	}
296
297	return
298}
299
300// ListOperationsPreparer prepares the ListOperations request.
301func (client ProviderClient) ListOperationsPreparer(ctx context.Context) (*http.Request, error) {
302	const APIVersion = "2016-03-01"
303	queryParameters := map[string]interface{}{
304		"api-version": APIVersion,
305	}
306
307	preparer := autorest.CreatePreparer(
308		autorest.AsGet(),
309		autorest.WithBaseURL(client.BaseURI),
310		autorest.WithPath("/providers/Microsoft.Web/operations"),
311		autorest.WithQueryParameters(queryParameters))
312	return preparer.Prepare((&http.Request{}).WithContext(ctx))
313}
314
315// ListOperationsSender sends the ListOperations request. The method will close the
316// http.Response Body if it receives an error.
317func (client ProviderClient) ListOperationsSender(req *http.Request) (*http.Response, error) {
318	sd := autorest.GetSendDecorators(req.Context(), autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
319	return autorest.SendWithSender(client, req, sd...)
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		client.ByInspecting(),
328		azure.WithErrorUnlessStatusCode(http.StatusOK),
329		autorest.ByUnmarshallingJSON(&result),
330		autorest.ByClosing())
331	result.Response = autorest.Response{Response: resp}
332	return
333}
334
335// listOperationsNextResults retrieves the next set of results, if any.
336func (client ProviderClient) listOperationsNextResults(ctx context.Context, lastResults CsmOperationCollection) (result CsmOperationCollection, err error) {
337	req, err := lastResults.csmOperationCollectionPreparer(ctx)
338	if err != nil {
339		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", nil, "Failure preparing next results request")
340	}
341	if req == nil {
342		return
343	}
344	resp, err := client.ListOperationsSender(req)
345	if err != nil {
346		result.Response = autorest.Response{Response: resp}
347		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", resp, "Failure sending next results request")
348	}
349	result, err = client.ListOperationsResponder(resp)
350	if err != nil {
351		err = autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", resp, "Failure responding to next results request")
352	}
353	return
354}
355
356// ListOperationsComplete enumerates all values, automatically crossing page boundaries as required.
357func (client ProviderClient) ListOperationsComplete(ctx context.Context) (result CsmOperationCollectionIterator, err error) {
358	if tracing.IsEnabled() {
359		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.ListOperations")
360		defer func() {
361			sc := -1
362			if result.Response().Response.Response != nil {
363				sc = result.page.Response().Response.Response.StatusCode
364			}
365			tracing.EndSpan(ctx, sc, err)
366		}()
367	}
368	result.page, err = client.ListOperations(ctx)
369	return
370}
371