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 using a custom endpoint.  Use this
39// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
40func NewProviderClientWithBaseURI(baseURI string, subscriptionID string) ProviderClient {
41	return ProviderClient{NewWithBaseURI(baseURI, subscriptionID)}
42}
43
44// GetAvailableStacks description for Get available application frameworks and their versions
45func (client ProviderClient) GetAvailableStacks(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionPage, err error) {
46	if tracing.IsEnabled() {
47		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacks")
48		defer func() {
49			sc := -1
50			if result.asc.Response.Response != nil {
51				sc = result.asc.Response.Response.StatusCode
52			}
53			tracing.EndSpan(ctx, sc, err)
54		}()
55	}
56	result.fn = client.getAvailableStacksNextResults
57	req, err := client.GetAvailableStacksPreparer(ctx, osTypeSelected)
58	if err != nil {
59		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", nil, "Failure preparing request")
60		return
61	}
62
63	resp, err := client.GetAvailableStacksSender(req)
64	if err != nil {
65		result.asc.Response = autorest.Response{Response: resp}
66		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", resp, "Failure sending request")
67		return
68	}
69
70	result.asc, err = client.GetAvailableStacksResponder(resp)
71	if err != nil {
72		err = autorest.NewErrorWithError(err, "web.ProviderClient", "GetAvailableStacks", resp, "Failure responding to request")
73	}
74
75	return
76}
77
78// GetAvailableStacksPreparer prepares the GetAvailableStacks request.
79func (client ProviderClient) GetAvailableStacksPreparer(ctx context.Context, osTypeSelected string) (*http.Request, error) {
80	const APIVersion = "2019-08-01"
81	queryParameters := map[string]interface{}{
82		"api-version": APIVersion,
83	}
84	if len(string(osTypeSelected)) > 0 {
85		queryParameters["osTypeSelected"] = autorest.Encode("query", osTypeSelected)
86	}
87
88	preparer := autorest.CreatePreparer(
89		autorest.AsGet(),
90		autorest.WithBaseURL(client.BaseURI),
91		autorest.WithPath("/providers/Microsoft.Web/availableStacks"),
92		autorest.WithQueryParameters(queryParameters))
93	return preparer.Prepare((&http.Request{}).WithContext(ctx))
94}
95
96// GetAvailableStacksSender sends the GetAvailableStacks request. The method will close the
97// http.Response Body if it receives an error.
98func (client ProviderClient) GetAvailableStacksSender(req *http.Request) (*http.Response, error) {
99	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
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 description for 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 = "2019-08-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	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
212}
213
214// GetAvailableStacksOnPremResponder handles the response to the GetAvailableStacksOnPrem request. The method always
215// closes the http.Response Body.
216func (client ProviderClient) GetAvailableStacksOnPremResponder(resp *http.Response) (result ApplicationStackCollection, err error) {
217	err = autorest.Respond(
218		resp,
219		client.ByInspecting(),
220		azure.WithErrorUnlessStatusCode(http.StatusOK),
221		autorest.ByUnmarshallingJSON(&result),
222		autorest.ByClosing())
223	result.Response = autorest.Response{Response: resp}
224	return
225}
226
227// getAvailableStacksOnPremNextResults retrieves the next set of results, if any.
228func (client ProviderClient) getAvailableStacksOnPremNextResults(ctx context.Context, lastResults ApplicationStackCollection) (result ApplicationStackCollection, err error) {
229	req, err := lastResults.applicationStackCollectionPreparer(ctx)
230	if err != nil {
231		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", nil, "Failure preparing next results request")
232	}
233	if req == nil {
234		return
235	}
236	resp, err := client.GetAvailableStacksOnPremSender(req)
237	if err != nil {
238		result.Response = autorest.Response{Response: resp}
239		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", resp, "Failure sending next results request")
240	}
241	result, err = client.GetAvailableStacksOnPremResponder(resp)
242	if err != nil {
243		err = autorest.NewErrorWithError(err, "web.ProviderClient", "getAvailableStacksOnPremNextResults", resp, "Failure responding to next results request")
244	}
245	return
246}
247
248// GetAvailableStacksOnPremComplete enumerates all values, automatically crossing page boundaries as required.
249func (client ProviderClient) GetAvailableStacksOnPremComplete(ctx context.Context, osTypeSelected string) (result ApplicationStackCollectionIterator, err error) {
250	if tracing.IsEnabled() {
251		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.GetAvailableStacksOnPrem")
252		defer func() {
253			sc := -1
254			if result.Response().Response.Response != nil {
255				sc = result.page.Response().Response.Response.StatusCode
256			}
257			tracing.EndSpan(ctx, sc, err)
258		}()
259	}
260	result.page, err = client.GetAvailableStacksOnPrem(ctx, osTypeSelected)
261	return
262}
263
264// ListOperations description for Gets all available operations for the Microsoft.Web resource provider. Also exposes
265// resource metric definitions
266func (client ProviderClient) ListOperations(ctx context.Context) (result CsmOperationCollectionPage, err error) {
267	if tracing.IsEnabled() {
268		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.ListOperations")
269		defer func() {
270			sc := -1
271			if result.coc.Response.Response != nil {
272				sc = result.coc.Response.Response.StatusCode
273			}
274			tracing.EndSpan(ctx, sc, err)
275		}()
276	}
277	result.fn = client.listOperationsNextResults
278	req, err := client.ListOperationsPreparer(ctx)
279	if err != nil {
280		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", nil, "Failure preparing request")
281		return
282	}
283
284	resp, err := client.ListOperationsSender(req)
285	if err != nil {
286		result.coc.Response = autorest.Response{Response: resp}
287		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", resp, "Failure sending request")
288		return
289	}
290
291	result.coc, err = client.ListOperationsResponder(resp)
292	if err != nil {
293		err = autorest.NewErrorWithError(err, "web.ProviderClient", "ListOperations", resp, "Failure responding to request")
294	}
295
296	return
297}
298
299// ListOperationsPreparer prepares the ListOperations request.
300func (client ProviderClient) ListOperationsPreparer(ctx context.Context) (*http.Request, error) {
301	const APIVersion = "2019-08-01"
302	queryParameters := map[string]interface{}{
303		"api-version": APIVersion,
304	}
305
306	preparer := autorest.CreatePreparer(
307		autorest.AsGet(),
308		autorest.WithBaseURL(client.BaseURI),
309		autorest.WithPath("/providers/Microsoft.Web/operations"),
310		autorest.WithQueryParameters(queryParameters))
311	return preparer.Prepare((&http.Request{}).WithContext(ctx))
312}
313
314// ListOperationsSender sends the ListOperations request. The method will close the
315// http.Response Body if it receives an error.
316func (client ProviderClient) ListOperationsSender(req *http.Request) (*http.Response, error) {
317	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
318}
319
320// ListOperationsResponder handles the response to the ListOperations request. The method always
321// closes the http.Response Body.
322func (client ProviderClient) ListOperationsResponder(resp *http.Response) (result CsmOperationCollection, err error) {
323	err = autorest.Respond(
324		resp,
325		client.ByInspecting(),
326		azure.WithErrorUnlessStatusCode(http.StatusOK),
327		autorest.ByUnmarshallingJSON(&result),
328		autorest.ByClosing())
329	result.Response = autorest.Response{Response: resp}
330	return
331}
332
333// listOperationsNextResults retrieves the next set of results, if any.
334func (client ProviderClient) listOperationsNextResults(ctx context.Context, lastResults CsmOperationCollection) (result CsmOperationCollection, err error) {
335	req, err := lastResults.csmOperationCollectionPreparer(ctx)
336	if err != nil {
337		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", nil, "Failure preparing next results request")
338	}
339	if req == nil {
340		return
341	}
342	resp, err := client.ListOperationsSender(req)
343	if err != nil {
344		result.Response = autorest.Response{Response: resp}
345		return result, autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", resp, "Failure sending next results request")
346	}
347	result, err = client.ListOperationsResponder(resp)
348	if err != nil {
349		err = autorest.NewErrorWithError(err, "web.ProviderClient", "listOperationsNextResults", resp, "Failure responding to next results request")
350	}
351	return
352}
353
354// ListOperationsComplete enumerates all values, automatically crossing page boundaries as required.
355func (client ProviderClient) ListOperationsComplete(ctx context.Context) (result CsmOperationCollectionIterator, err error) {
356	if tracing.IsEnabled() {
357		ctx = tracing.StartSpan(ctx, fqdn+"/ProviderClient.ListOperations")
358		defer func() {
359			sc := -1
360			if result.Response().Response.Response != nil {
361				sc = result.page.Response().Response.Response.StatusCode
362			}
363			tracing.EndSpan(ctx, sc, err)
364		}()
365	}
366	result.page, err = client.ListOperations(ctx)
367	return
368}
369