1package dtl
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// ArtifactSourceClient is the azure DevTest Labs REST API version 2015-05-21-preview.
18type ArtifactSourceClient struct {
19	BaseClient
20}
21
22// NewArtifactSourceClient creates an instance of the ArtifactSourceClient client.
23func NewArtifactSourceClient(subscriptionID string) ArtifactSourceClient {
24	return NewArtifactSourceClientWithBaseURI(DefaultBaseURI, subscriptionID)
25}
26
27// NewArtifactSourceClientWithBaseURI creates an instance of the ArtifactSourceClient client using a custom endpoint.
28// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
29func NewArtifactSourceClientWithBaseURI(baseURI string, subscriptionID string) ArtifactSourceClient {
30	return ArtifactSourceClient{NewWithBaseURI(baseURI, subscriptionID)}
31}
32
33// CreateOrUpdateResource create or replace an existing artifact source.
34// Parameters:
35// resourceGroupName - the name of the resource group.
36// labName - the name of the lab.
37// name - the name of the artifact source.
38func (client ArtifactSourceClient) CreateOrUpdateResource(ctx context.Context, resourceGroupName string, labName string, name string, artifactSource ArtifactSource) (result ArtifactSource, err error) {
39	if tracing.IsEnabled() {
40		ctx = tracing.StartSpan(ctx, fqdn+"/ArtifactSourceClient.CreateOrUpdateResource")
41		defer func() {
42			sc := -1
43			if result.Response.Response != nil {
44				sc = result.Response.Response.StatusCode
45			}
46			tracing.EndSpan(ctx, sc, err)
47		}()
48	}
49	req, err := client.CreateOrUpdateResourcePreparer(ctx, resourceGroupName, labName, name, artifactSource)
50	if err != nil {
51		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "CreateOrUpdateResource", nil, "Failure preparing request")
52		return
53	}
54
55	resp, err := client.CreateOrUpdateResourceSender(req)
56	if err != nil {
57		result.Response = autorest.Response{Response: resp}
58		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "CreateOrUpdateResource", resp, "Failure sending request")
59		return
60	}
61
62	result, err = client.CreateOrUpdateResourceResponder(resp)
63	if err != nil {
64		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "CreateOrUpdateResource", resp, "Failure responding to request")
65		return
66	}
67
68	return
69}
70
71// CreateOrUpdateResourcePreparer prepares the CreateOrUpdateResource request.
72func (client ArtifactSourceClient) CreateOrUpdateResourcePreparer(ctx context.Context, resourceGroupName string, labName string, name string, artifactSource ArtifactSource) (*http.Request, error) {
73	pathParameters := map[string]interface{}{
74		"labName":           autorest.Encode("path", labName),
75		"name":              autorest.Encode("path", name),
76		"resourceGroupName": autorest.Encode("path", resourceGroupName),
77		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
78	}
79
80	const APIVersion = "2015-05-21-preview"
81	queryParameters := map[string]interface{}{
82		"api-version": APIVersion,
83	}
84
85	preparer := autorest.CreatePreparer(
86		autorest.AsContentType("application/json; charset=utf-8"),
87		autorest.AsPut(),
88		autorest.WithBaseURL(client.BaseURI),
89		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", pathParameters),
90		autorest.WithJSON(artifactSource),
91		autorest.WithQueryParameters(queryParameters))
92	return preparer.Prepare((&http.Request{}).WithContext(ctx))
93}
94
95// CreateOrUpdateResourceSender sends the CreateOrUpdateResource request. The method will close the
96// http.Response Body if it receives an error.
97func (client ArtifactSourceClient) CreateOrUpdateResourceSender(req *http.Request) (*http.Response, error) {
98	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
99}
100
101// CreateOrUpdateResourceResponder handles the response to the CreateOrUpdateResource request. The method always
102// closes the http.Response Body.
103func (client ArtifactSourceClient) CreateOrUpdateResourceResponder(resp *http.Response) (result ArtifactSource, err error) {
104	err = autorest.Respond(
105		resp,
106		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
107		autorest.ByUnmarshallingJSON(&result),
108		autorest.ByClosing())
109	result.Response = autorest.Response{Response: resp}
110	return
111}
112
113// DeleteResource delete artifact source.
114// Parameters:
115// resourceGroupName - the name of the resource group.
116// labName - the name of the lab.
117// name - the name of the artifact source.
118func (client ArtifactSourceClient) DeleteResource(ctx context.Context, resourceGroupName string, labName string, name string) (result autorest.Response, err error) {
119	if tracing.IsEnabled() {
120		ctx = tracing.StartSpan(ctx, fqdn+"/ArtifactSourceClient.DeleteResource")
121		defer func() {
122			sc := -1
123			if result.Response != nil {
124				sc = result.Response.StatusCode
125			}
126			tracing.EndSpan(ctx, sc, err)
127		}()
128	}
129	req, err := client.DeleteResourcePreparer(ctx, resourceGroupName, labName, name)
130	if err != nil {
131		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "DeleteResource", nil, "Failure preparing request")
132		return
133	}
134
135	resp, err := client.DeleteResourceSender(req)
136	if err != nil {
137		result.Response = resp
138		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "DeleteResource", resp, "Failure sending request")
139		return
140	}
141
142	result, err = client.DeleteResourceResponder(resp)
143	if err != nil {
144		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "DeleteResource", resp, "Failure responding to request")
145		return
146	}
147
148	return
149}
150
151// DeleteResourcePreparer prepares the DeleteResource request.
152func (client ArtifactSourceClient) DeleteResourcePreparer(ctx context.Context, resourceGroupName string, labName string, name string) (*http.Request, error) {
153	pathParameters := map[string]interface{}{
154		"labName":           autorest.Encode("path", labName),
155		"name":              autorest.Encode("path", name),
156		"resourceGroupName": autorest.Encode("path", resourceGroupName),
157		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
158	}
159
160	const APIVersion = "2015-05-21-preview"
161	queryParameters := map[string]interface{}{
162		"api-version": APIVersion,
163	}
164
165	preparer := autorest.CreatePreparer(
166		autorest.AsDelete(),
167		autorest.WithBaseURL(client.BaseURI),
168		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", pathParameters),
169		autorest.WithQueryParameters(queryParameters))
170	return preparer.Prepare((&http.Request{}).WithContext(ctx))
171}
172
173// DeleteResourceSender sends the DeleteResource request. The method will close the
174// http.Response Body if it receives an error.
175func (client ArtifactSourceClient) DeleteResourceSender(req *http.Request) (*http.Response, error) {
176	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
177}
178
179// DeleteResourceResponder handles the response to the DeleteResource request. The method always
180// closes the http.Response Body.
181func (client ArtifactSourceClient) DeleteResourceResponder(resp *http.Response) (result autorest.Response, err error) {
182	err = autorest.Respond(
183		resp,
184		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
185		autorest.ByClosing())
186	result.Response = resp
187	return
188}
189
190// GetResource get artifact source.
191// Parameters:
192// resourceGroupName - the name of the resource group.
193// labName - the name of the lab.
194// name - the name of the artifact source.
195func (client ArtifactSourceClient) GetResource(ctx context.Context, resourceGroupName string, labName string, name string) (result ArtifactSource, err error) {
196	if tracing.IsEnabled() {
197		ctx = tracing.StartSpan(ctx, fqdn+"/ArtifactSourceClient.GetResource")
198		defer func() {
199			sc := -1
200			if result.Response.Response != nil {
201				sc = result.Response.Response.StatusCode
202			}
203			tracing.EndSpan(ctx, sc, err)
204		}()
205	}
206	req, err := client.GetResourcePreparer(ctx, resourceGroupName, labName, name)
207	if err != nil {
208		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "GetResource", nil, "Failure preparing request")
209		return
210	}
211
212	resp, err := client.GetResourceSender(req)
213	if err != nil {
214		result.Response = autorest.Response{Response: resp}
215		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "GetResource", resp, "Failure sending request")
216		return
217	}
218
219	result, err = client.GetResourceResponder(resp)
220	if err != nil {
221		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "GetResource", resp, "Failure responding to request")
222		return
223	}
224
225	return
226}
227
228// GetResourcePreparer prepares the GetResource request.
229func (client ArtifactSourceClient) GetResourcePreparer(ctx context.Context, resourceGroupName string, labName string, name string) (*http.Request, error) {
230	pathParameters := map[string]interface{}{
231		"labName":           autorest.Encode("path", labName),
232		"name":              autorest.Encode("path", name),
233		"resourceGroupName": autorest.Encode("path", resourceGroupName),
234		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
235	}
236
237	const APIVersion = "2015-05-21-preview"
238	queryParameters := map[string]interface{}{
239		"api-version": APIVersion,
240	}
241
242	preparer := autorest.CreatePreparer(
243		autorest.AsGet(),
244		autorest.WithBaseURL(client.BaseURI),
245		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", pathParameters),
246		autorest.WithQueryParameters(queryParameters))
247	return preparer.Prepare((&http.Request{}).WithContext(ctx))
248}
249
250// GetResourceSender sends the GetResource request. The method will close the
251// http.Response Body if it receives an error.
252func (client ArtifactSourceClient) GetResourceSender(req *http.Request) (*http.Response, error) {
253	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
254}
255
256// GetResourceResponder handles the response to the GetResource request. The method always
257// closes the http.Response Body.
258func (client ArtifactSourceClient) GetResourceResponder(resp *http.Response) (result ArtifactSource, err error) {
259	err = autorest.Respond(
260		resp,
261		azure.WithErrorUnlessStatusCode(http.StatusOK),
262		autorest.ByUnmarshallingJSON(&result),
263		autorest.ByClosing())
264	result.Response = autorest.Response{Response: resp}
265	return
266}
267
268// List list artifact sources.
269// Parameters:
270// resourceGroupName - the name of the resource group.
271// labName - the name of the lab.
272// filter - the filter to apply on the operation.
273func (client ArtifactSourceClient) List(ctx context.Context, resourceGroupName string, labName string, filter string, top *int32, orderBy string) (result ResponseWithContinuationArtifactSourcePage, err error) {
274	if tracing.IsEnabled() {
275		ctx = tracing.StartSpan(ctx, fqdn+"/ArtifactSourceClient.List")
276		defer func() {
277			sc := -1
278			if result.rwcas.Response.Response != nil {
279				sc = result.rwcas.Response.Response.StatusCode
280			}
281			tracing.EndSpan(ctx, sc, err)
282		}()
283	}
284	result.fn = client.listNextResults
285	req, err := client.ListPreparer(ctx, resourceGroupName, labName, filter, top, orderBy)
286	if err != nil {
287		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "List", nil, "Failure preparing request")
288		return
289	}
290
291	resp, err := client.ListSender(req)
292	if err != nil {
293		result.rwcas.Response = autorest.Response{Response: resp}
294		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "List", resp, "Failure sending request")
295		return
296	}
297
298	result.rwcas, err = client.ListResponder(resp)
299	if err != nil {
300		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "List", resp, "Failure responding to request")
301		return
302	}
303	if result.rwcas.hasNextLink() && result.rwcas.IsEmpty() {
304		err = result.NextWithContext(ctx)
305		return
306	}
307
308	return
309}
310
311// ListPreparer prepares the List request.
312func (client ArtifactSourceClient) ListPreparer(ctx context.Context, resourceGroupName string, labName string, filter string, top *int32, orderBy string) (*http.Request, error) {
313	pathParameters := map[string]interface{}{
314		"labName":           autorest.Encode("path", labName),
315		"resourceGroupName": autorest.Encode("path", resourceGroupName),
316		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
317	}
318
319	const APIVersion = "2015-05-21-preview"
320	queryParameters := map[string]interface{}{
321		"api-version": APIVersion,
322	}
323	if len(filter) > 0 {
324		queryParameters["$filter"] = autorest.Encode("query", filter)
325	}
326	if top != nil {
327		queryParameters["$top"] = autorest.Encode("query", *top)
328	}
329	if len(orderBy) > 0 {
330		queryParameters["$orderBy"] = autorest.Encode("query", orderBy)
331	}
332
333	preparer := autorest.CreatePreparer(
334		autorest.AsGet(),
335		autorest.WithBaseURL(client.BaseURI),
336		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources", pathParameters),
337		autorest.WithQueryParameters(queryParameters))
338	return preparer.Prepare((&http.Request{}).WithContext(ctx))
339}
340
341// ListSender sends the List request. The method will close the
342// http.Response Body if it receives an error.
343func (client ArtifactSourceClient) ListSender(req *http.Request) (*http.Response, error) {
344	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
345}
346
347// ListResponder handles the response to the List request. The method always
348// closes the http.Response Body.
349func (client ArtifactSourceClient) ListResponder(resp *http.Response) (result ResponseWithContinuationArtifactSource, err error) {
350	err = autorest.Respond(
351		resp,
352		azure.WithErrorUnlessStatusCode(http.StatusOK),
353		autorest.ByUnmarshallingJSON(&result),
354		autorest.ByClosing())
355	result.Response = autorest.Response{Response: resp}
356	return
357}
358
359// listNextResults retrieves the next set of results, if any.
360func (client ArtifactSourceClient) listNextResults(ctx context.Context, lastResults ResponseWithContinuationArtifactSource) (result ResponseWithContinuationArtifactSource, err error) {
361	req, err := lastResults.responseWithContinuationArtifactSourcePreparer(ctx)
362	if err != nil {
363		return result, autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "listNextResults", nil, "Failure preparing next results request")
364	}
365	if req == nil {
366		return
367	}
368	resp, err := client.ListSender(req)
369	if err != nil {
370		result.Response = autorest.Response{Response: resp}
371		return result, autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "listNextResults", resp, "Failure sending next results request")
372	}
373	result, err = client.ListResponder(resp)
374	if err != nil {
375		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "listNextResults", resp, "Failure responding to next results request")
376	}
377	return
378}
379
380// ListComplete enumerates all values, automatically crossing page boundaries as required.
381func (client ArtifactSourceClient) ListComplete(ctx context.Context, resourceGroupName string, labName string, filter string, top *int32, orderBy string) (result ResponseWithContinuationArtifactSourceIterator, err error) {
382	if tracing.IsEnabled() {
383		ctx = tracing.StartSpan(ctx, fqdn+"/ArtifactSourceClient.List")
384		defer func() {
385			sc := -1
386			if result.Response().Response.Response != nil {
387				sc = result.page.Response().Response.Response.StatusCode
388			}
389			tracing.EndSpan(ctx, sc, err)
390		}()
391	}
392	result.page, err = client.List(ctx, resourceGroupName, labName, filter, top, orderBy)
393	return
394}
395
396// PatchResource modify properties of artifact sources.
397// Parameters:
398// resourceGroupName - the name of the resource group.
399// labName - the name of the lab.
400// name - the name of the artifact source.
401func (client ArtifactSourceClient) PatchResource(ctx context.Context, resourceGroupName string, labName string, name string, artifactSource ArtifactSource) (result ArtifactSource, err error) {
402	if tracing.IsEnabled() {
403		ctx = tracing.StartSpan(ctx, fqdn+"/ArtifactSourceClient.PatchResource")
404		defer func() {
405			sc := -1
406			if result.Response.Response != nil {
407				sc = result.Response.Response.StatusCode
408			}
409			tracing.EndSpan(ctx, sc, err)
410		}()
411	}
412	req, err := client.PatchResourcePreparer(ctx, resourceGroupName, labName, name, artifactSource)
413	if err != nil {
414		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "PatchResource", nil, "Failure preparing request")
415		return
416	}
417
418	resp, err := client.PatchResourceSender(req)
419	if err != nil {
420		result.Response = autorest.Response{Response: resp}
421		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "PatchResource", resp, "Failure sending request")
422		return
423	}
424
425	result, err = client.PatchResourceResponder(resp)
426	if err != nil {
427		err = autorest.NewErrorWithError(err, "dtl.ArtifactSourceClient", "PatchResource", resp, "Failure responding to request")
428		return
429	}
430
431	return
432}
433
434// PatchResourcePreparer prepares the PatchResource request.
435func (client ArtifactSourceClient) PatchResourcePreparer(ctx context.Context, resourceGroupName string, labName string, name string, artifactSource ArtifactSource) (*http.Request, error) {
436	pathParameters := map[string]interface{}{
437		"labName":           autorest.Encode("path", labName),
438		"name":              autorest.Encode("path", name),
439		"resourceGroupName": autorest.Encode("path", resourceGroupName),
440		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
441	}
442
443	const APIVersion = "2015-05-21-preview"
444	queryParameters := map[string]interface{}{
445		"api-version": APIVersion,
446	}
447
448	preparer := autorest.CreatePreparer(
449		autorest.AsContentType("application/json; charset=utf-8"),
450		autorest.AsPatch(),
451		autorest.WithBaseURL(client.BaseURI),
452		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", pathParameters),
453		autorest.WithJSON(artifactSource),
454		autorest.WithQueryParameters(queryParameters))
455	return preparer.Prepare((&http.Request{}).WithContext(ctx))
456}
457
458// PatchResourceSender sends the PatchResource request. The method will close the
459// http.Response Body if it receives an error.
460func (client ArtifactSourceClient) PatchResourceSender(req *http.Request) (*http.Response, error) {
461	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
462}
463
464// PatchResourceResponder handles the response to the PatchResource request. The method always
465// closes the http.Response Body.
466func (client ArtifactSourceClient) PatchResourceResponder(resp *http.Response) (result ArtifactSource, err error) {
467	err = autorest.Respond(
468		resp,
469		azure.WithErrorUnlessStatusCode(http.StatusOK),
470		autorest.ByUnmarshallingJSON(&result),
471		autorest.ByClosing())
472	result.Response = autorest.Response{Response: resp}
473	return
474}
475