1package apimanagement
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/autorest/validation"
14	"github.com/Azure/go-autorest/tracing"
15	"net/http"
16)
17
18// ContentItemClient is the apiManagement Client
19type ContentItemClient struct {
20	BaseClient
21}
22
23// NewContentItemClient creates an instance of the ContentItemClient client.
24func NewContentItemClient(subscriptionID string) ContentItemClient {
25	return NewContentItemClientWithBaseURI(DefaultBaseURI, subscriptionID)
26}
27
28// NewContentItemClientWithBaseURI creates an instance of the ContentItemClient client using a custom endpoint.  Use
29// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
30func NewContentItemClientWithBaseURI(baseURI string, subscriptionID string) ContentItemClient {
31	return ContentItemClient{NewWithBaseURI(baseURI, subscriptionID)}
32}
33
34// CreateOrUpdate creates a new developer portal's content item specified by the provided content type.
35// Parameters:
36// resourceGroupName - the name of the resource group.
37// serviceName - the name of the API Management service.
38// contentTypeID - content type identifier.
39// contentItemID - content item identifier.
40// ifMatch - eTag of the Entity. Not required when creating an entity, but required when updating an entity.
41func (client ContentItemClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string, contentItemID string, ifMatch string) (result ContentItemContract, err error) {
42	if tracing.IsEnabled() {
43		ctx = tracing.StartSpan(ctx, fqdn+"/ContentItemClient.CreateOrUpdate")
44		defer func() {
45			sc := -1
46			if result.Response.Response != nil {
47				sc = result.Response.Response.StatusCode
48			}
49			tracing.EndSpan(ctx, sc, err)
50		}()
51	}
52	if err := validation.Validate([]validation.Validation{
53		{TargetValue: serviceName,
54			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
55				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
56				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}},
57		{TargetValue: contentTypeID,
58			Constraints: []validation.Constraint{{Target: "contentTypeID", Name: validation.MaxLength, Rule: 80, Chain: nil},
59				{Target: "contentTypeID", Name: validation.MinLength, Rule: 1, Chain: nil}}},
60		{TargetValue: contentItemID,
61			Constraints: []validation.Constraint{{Target: "contentItemID", Name: validation.MaxLength, Rule: 80, Chain: nil},
62				{Target: "contentItemID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
63		return result, validation.NewError("apimanagement.ContentItemClient", "CreateOrUpdate", err.Error())
64	}
65
66	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, serviceName, contentTypeID, contentItemID, ifMatch)
67	if err != nil {
68		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "CreateOrUpdate", nil, "Failure preparing request")
69		return
70	}
71
72	resp, err := client.CreateOrUpdateSender(req)
73	if err != nil {
74		result.Response = autorest.Response{Response: resp}
75		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "CreateOrUpdate", resp, "Failure sending request")
76		return
77	}
78
79	result, err = client.CreateOrUpdateResponder(resp)
80	if err != nil {
81		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "CreateOrUpdate", resp, "Failure responding to request")
82		return
83	}
84
85	return
86}
87
88// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
89func (client ContentItemClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string, contentItemID string, ifMatch string) (*http.Request, error) {
90	pathParameters := map[string]interface{}{
91		"contentItemId":     autorest.Encode("path", contentItemID),
92		"contentTypeId":     autorest.Encode("path", contentTypeID),
93		"resourceGroupName": autorest.Encode("path", resourceGroupName),
94		"serviceName":       autorest.Encode("path", serviceName),
95		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
96	}
97
98	const APIVersion = "2021-01-01-preview"
99	queryParameters := map[string]interface{}{
100		"api-version": APIVersion,
101	}
102
103	preparer := autorest.CreatePreparer(
104		autorest.AsPut(),
105		autorest.WithBaseURL(client.BaseURI),
106		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/contentTypes/{contentTypeId}/contentItems/{contentItemId}", pathParameters),
107		autorest.WithQueryParameters(queryParameters))
108	if len(ifMatch) > 0 {
109		preparer = autorest.DecoratePreparer(preparer,
110			autorest.WithHeader("If-Match", autorest.String(ifMatch)))
111	}
112	return preparer.Prepare((&http.Request{}).WithContext(ctx))
113}
114
115// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
116// http.Response Body if it receives an error.
117func (client ContentItemClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
118	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
119}
120
121// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
122// closes the http.Response Body.
123func (client ContentItemClient) CreateOrUpdateResponder(resp *http.Response) (result ContentItemContract, err error) {
124	err = autorest.Respond(
125		resp,
126		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
127		autorest.ByUnmarshallingJSON(&result),
128		autorest.ByClosing())
129	result.Response = autorest.Response{Response: resp}
130	return
131}
132
133// Delete removes the specified developer portal's content item.
134// Parameters:
135// resourceGroupName - the name of the resource group.
136// serviceName - the name of the API Management service.
137// contentTypeID - content type identifier.
138// contentItemID - content item identifier.
139// ifMatch - eTag of the Entity. ETag should match the current entity state from the header response of the GET
140// request or it should be * for unconditional update.
141func (client ContentItemClient) Delete(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string, contentItemID string, ifMatch string) (result autorest.Response, err error) {
142	if tracing.IsEnabled() {
143		ctx = tracing.StartSpan(ctx, fqdn+"/ContentItemClient.Delete")
144		defer func() {
145			sc := -1
146			if result.Response != nil {
147				sc = result.Response.StatusCode
148			}
149			tracing.EndSpan(ctx, sc, err)
150		}()
151	}
152	if err := validation.Validate([]validation.Validation{
153		{TargetValue: serviceName,
154			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
155				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
156				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}},
157		{TargetValue: contentTypeID,
158			Constraints: []validation.Constraint{{Target: "contentTypeID", Name: validation.MaxLength, Rule: 80, Chain: nil},
159				{Target: "contentTypeID", Name: validation.MinLength, Rule: 1, Chain: nil}}},
160		{TargetValue: contentItemID,
161			Constraints: []validation.Constraint{{Target: "contentItemID", Name: validation.MaxLength, Rule: 80, Chain: nil},
162				{Target: "contentItemID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
163		return result, validation.NewError("apimanagement.ContentItemClient", "Delete", err.Error())
164	}
165
166	req, err := client.DeletePreparer(ctx, resourceGroupName, serviceName, contentTypeID, contentItemID, ifMatch)
167	if err != nil {
168		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "Delete", nil, "Failure preparing request")
169		return
170	}
171
172	resp, err := client.DeleteSender(req)
173	if err != nil {
174		result.Response = resp
175		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "Delete", resp, "Failure sending request")
176		return
177	}
178
179	result, err = client.DeleteResponder(resp)
180	if err != nil {
181		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "Delete", resp, "Failure responding to request")
182		return
183	}
184
185	return
186}
187
188// DeletePreparer prepares the Delete request.
189func (client ContentItemClient) DeletePreparer(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string, contentItemID string, ifMatch string) (*http.Request, error) {
190	pathParameters := map[string]interface{}{
191		"contentItemId":     autorest.Encode("path", contentItemID),
192		"contentTypeId":     autorest.Encode("path", contentTypeID),
193		"resourceGroupName": autorest.Encode("path", resourceGroupName),
194		"serviceName":       autorest.Encode("path", serviceName),
195		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
196	}
197
198	const APIVersion = "2021-01-01-preview"
199	queryParameters := map[string]interface{}{
200		"api-version": APIVersion,
201	}
202
203	preparer := autorest.CreatePreparer(
204		autorest.AsDelete(),
205		autorest.WithBaseURL(client.BaseURI),
206		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/contentTypes/{contentTypeId}/contentItems/{contentItemId}", pathParameters),
207		autorest.WithQueryParameters(queryParameters),
208		autorest.WithHeader("If-Match", autorest.String(ifMatch)))
209	return preparer.Prepare((&http.Request{}).WithContext(ctx))
210}
211
212// DeleteSender sends the Delete request. The method will close the
213// http.Response Body if it receives an error.
214func (client ContentItemClient) DeleteSender(req *http.Request) (*http.Response, error) {
215	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
216}
217
218// DeleteResponder handles the response to the Delete request. The method always
219// closes the http.Response Body.
220func (client ContentItemClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
221	err = autorest.Respond(
222		resp,
223		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
224		autorest.ByClosing())
225	result.Response = resp
226	return
227}
228
229// Get returns the developer portal's content item specified by its identifier.
230// Parameters:
231// resourceGroupName - the name of the resource group.
232// serviceName - the name of the API Management service.
233// contentTypeID - content type identifier.
234// contentItemID - content item identifier.
235func (client ContentItemClient) Get(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string, contentItemID string) (result ContentItemContract, err error) {
236	if tracing.IsEnabled() {
237		ctx = tracing.StartSpan(ctx, fqdn+"/ContentItemClient.Get")
238		defer func() {
239			sc := -1
240			if result.Response.Response != nil {
241				sc = result.Response.Response.StatusCode
242			}
243			tracing.EndSpan(ctx, sc, err)
244		}()
245	}
246	if err := validation.Validate([]validation.Validation{
247		{TargetValue: serviceName,
248			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
249				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
250				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}},
251		{TargetValue: contentTypeID,
252			Constraints: []validation.Constraint{{Target: "contentTypeID", Name: validation.MaxLength, Rule: 80, Chain: nil},
253				{Target: "contentTypeID", Name: validation.MinLength, Rule: 1, Chain: nil}}},
254		{TargetValue: contentItemID,
255			Constraints: []validation.Constraint{{Target: "contentItemID", Name: validation.MaxLength, Rule: 80, Chain: nil},
256				{Target: "contentItemID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
257		return result, validation.NewError("apimanagement.ContentItemClient", "Get", err.Error())
258	}
259
260	req, err := client.GetPreparer(ctx, resourceGroupName, serviceName, contentTypeID, contentItemID)
261	if err != nil {
262		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "Get", nil, "Failure preparing request")
263		return
264	}
265
266	resp, err := client.GetSender(req)
267	if err != nil {
268		result.Response = autorest.Response{Response: resp}
269		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "Get", resp, "Failure sending request")
270		return
271	}
272
273	result, err = client.GetResponder(resp)
274	if err != nil {
275		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "Get", resp, "Failure responding to request")
276		return
277	}
278
279	return
280}
281
282// GetPreparer prepares the Get request.
283func (client ContentItemClient) GetPreparer(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string, contentItemID string) (*http.Request, error) {
284	pathParameters := map[string]interface{}{
285		"contentItemId":     autorest.Encode("path", contentItemID),
286		"contentTypeId":     autorest.Encode("path", contentTypeID),
287		"resourceGroupName": autorest.Encode("path", resourceGroupName),
288		"serviceName":       autorest.Encode("path", serviceName),
289		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
290	}
291
292	const APIVersion = "2021-01-01-preview"
293	queryParameters := map[string]interface{}{
294		"api-version": APIVersion,
295	}
296
297	preparer := autorest.CreatePreparer(
298		autorest.AsGet(),
299		autorest.WithBaseURL(client.BaseURI),
300		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/contentTypes/{contentTypeId}/contentItems/{contentItemId}", pathParameters),
301		autorest.WithQueryParameters(queryParameters))
302	return preparer.Prepare((&http.Request{}).WithContext(ctx))
303}
304
305// GetSender sends the Get request. The method will close the
306// http.Response Body if it receives an error.
307func (client ContentItemClient) GetSender(req *http.Request) (*http.Response, error) {
308	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
309}
310
311// GetResponder handles the response to the Get request. The method always
312// closes the http.Response Body.
313func (client ContentItemClient) GetResponder(resp *http.Response) (result ContentItemContract, err error) {
314	err = autorest.Respond(
315		resp,
316		azure.WithErrorUnlessStatusCode(http.StatusOK),
317		autorest.ByUnmarshallingJSON(&result),
318		autorest.ByClosing())
319	result.Response = autorest.Response{Response: resp}
320	return
321}
322
323// GetEntityTag returns the entity state (ETag) version of the developer portal's content item specified by its
324// identifier.
325// Parameters:
326// resourceGroupName - the name of the resource group.
327// serviceName - the name of the API Management service.
328// contentTypeID - content type identifier.
329// contentItemID - content item identifier.
330func (client ContentItemClient) GetEntityTag(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string, contentItemID string) (result autorest.Response, err error) {
331	if tracing.IsEnabled() {
332		ctx = tracing.StartSpan(ctx, fqdn+"/ContentItemClient.GetEntityTag")
333		defer func() {
334			sc := -1
335			if result.Response != nil {
336				sc = result.Response.StatusCode
337			}
338			tracing.EndSpan(ctx, sc, err)
339		}()
340	}
341	if err := validation.Validate([]validation.Validation{
342		{TargetValue: serviceName,
343			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
344				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
345				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}},
346		{TargetValue: contentTypeID,
347			Constraints: []validation.Constraint{{Target: "contentTypeID", Name: validation.MaxLength, Rule: 80, Chain: nil},
348				{Target: "contentTypeID", Name: validation.MinLength, Rule: 1, Chain: nil}}},
349		{TargetValue: contentItemID,
350			Constraints: []validation.Constraint{{Target: "contentItemID", Name: validation.MaxLength, Rule: 80, Chain: nil},
351				{Target: "contentItemID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
352		return result, validation.NewError("apimanagement.ContentItemClient", "GetEntityTag", err.Error())
353	}
354
355	req, err := client.GetEntityTagPreparer(ctx, resourceGroupName, serviceName, contentTypeID, contentItemID)
356	if err != nil {
357		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "GetEntityTag", nil, "Failure preparing request")
358		return
359	}
360
361	resp, err := client.GetEntityTagSender(req)
362	if err != nil {
363		result.Response = resp
364		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "GetEntityTag", resp, "Failure sending request")
365		return
366	}
367
368	result, err = client.GetEntityTagResponder(resp)
369	if err != nil {
370		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "GetEntityTag", resp, "Failure responding to request")
371		return
372	}
373
374	return
375}
376
377// GetEntityTagPreparer prepares the GetEntityTag request.
378func (client ContentItemClient) GetEntityTagPreparer(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string, contentItemID string) (*http.Request, error) {
379	pathParameters := map[string]interface{}{
380		"contentItemId":     autorest.Encode("path", contentItemID),
381		"contentTypeId":     autorest.Encode("path", contentTypeID),
382		"resourceGroupName": autorest.Encode("path", resourceGroupName),
383		"serviceName":       autorest.Encode("path", serviceName),
384		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
385	}
386
387	const APIVersion = "2021-01-01-preview"
388	queryParameters := map[string]interface{}{
389		"api-version": APIVersion,
390	}
391
392	preparer := autorest.CreatePreparer(
393		autorest.AsHead(),
394		autorest.WithBaseURL(client.BaseURI),
395		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/contentTypes/{contentTypeId}/contentItems/{contentItemId}", pathParameters),
396		autorest.WithQueryParameters(queryParameters))
397	return preparer.Prepare((&http.Request{}).WithContext(ctx))
398}
399
400// GetEntityTagSender sends the GetEntityTag request. The method will close the
401// http.Response Body if it receives an error.
402func (client ContentItemClient) GetEntityTagSender(req *http.Request) (*http.Response, error) {
403	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
404}
405
406// GetEntityTagResponder handles the response to the GetEntityTag request. The method always
407// closes the http.Response Body.
408func (client ContentItemClient) GetEntityTagResponder(resp *http.Response) (result autorest.Response, err error) {
409	err = autorest.Respond(
410		resp,
411		azure.WithErrorUnlessStatusCode(http.StatusOK),
412		autorest.ByClosing())
413	result.Response = resp
414	return
415}
416
417// ListByService lists developer portal's content items specified by the provided content type.
418// Parameters:
419// resourceGroupName - the name of the resource group.
420// serviceName - the name of the API Management service.
421// contentTypeID - content type identifier.
422func (client ContentItemClient) ListByService(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string) (result ContentItemCollectionPage, err error) {
423	if tracing.IsEnabled() {
424		ctx = tracing.StartSpan(ctx, fqdn+"/ContentItemClient.ListByService")
425		defer func() {
426			sc := -1
427			if result.cic.Response.Response != nil {
428				sc = result.cic.Response.Response.StatusCode
429			}
430			tracing.EndSpan(ctx, sc, err)
431		}()
432	}
433	if err := validation.Validate([]validation.Validation{
434		{TargetValue: serviceName,
435			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
436				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
437				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}},
438		{TargetValue: contentTypeID,
439			Constraints: []validation.Constraint{{Target: "contentTypeID", Name: validation.MaxLength, Rule: 80, Chain: nil},
440				{Target: "contentTypeID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
441		return result, validation.NewError("apimanagement.ContentItemClient", "ListByService", err.Error())
442	}
443
444	result.fn = client.listByServiceNextResults
445	req, err := client.ListByServicePreparer(ctx, resourceGroupName, serviceName, contentTypeID)
446	if err != nil {
447		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "ListByService", nil, "Failure preparing request")
448		return
449	}
450
451	resp, err := client.ListByServiceSender(req)
452	if err != nil {
453		result.cic.Response = autorest.Response{Response: resp}
454		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "ListByService", resp, "Failure sending request")
455		return
456	}
457
458	result.cic, err = client.ListByServiceResponder(resp)
459	if err != nil {
460		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "ListByService", resp, "Failure responding to request")
461		return
462	}
463	if result.cic.hasNextLink() && result.cic.IsEmpty() {
464		err = result.NextWithContext(ctx)
465		return
466	}
467
468	return
469}
470
471// ListByServicePreparer prepares the ListByService request.
472func (client ContentItemClient) ListByServicePreparer(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string) (*http.Request, error) {
473	pathParameters := map[string]interface{}{
474		"contentTypeId":     autorest.Encode("path", contentTypeID),
475		"resourceGroupName": autorest.Encode("path", resourceGroupName),
476		"serviceName":       autorest.Encode("path", serviceName),
477		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
478	}
479
480	const APIVersion = "2021-01-01-preview"
481	queryParameters := map[string]interface{}{
482		"api-version": APIVersion,
483	}
484
485	preparer := autorest.CreatePreparer(
486		autorest.AsGet(),
487		autorest.WithBaseURL(client.BaseURI),
488		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/contentTypes/{contentTypeId}/contentItems", pathParameters),
489		autorest.WithQueryParameters(queryParameters))
490	return preparer.Prepare((&http.Request{}).WithContext(ctx))
491}
492
493// ListByServiceSender sends the ListByService request. The method will close the
494// http.Response Body if it receives an error.
495func (client ContentItemClient) ListByServiceSender(req *http.Request) (*http.Response, error) {
496	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
497}
498
499// ListByServiceResponder handles the response to the ListByService request. The method always
500// closes the http.Response Body.
501func (client ContentItemClient) ListByServiceResponder(resp *http.Response) (result ContentItemCollection, err error) {
502	err = autorest.Respond(
503		resp,
504		azure.WithErrorUnlessStatusCode(http.StatusOK),
505		autorest.ByUnmarshallingJSON(&result),
506		autorest.ByClosing())
507	result.Response = autorest.Response{Response: resp}
508	return
509}
510
511// listByServiceNextResults retrieves the next set of results, if any.
512func (client ContentItemClient) listByServiceNextResults(ctx context.Context, lastResults ContentItemCollection) (result ContentItemCollection, err error) {
513	req, err := lastResults.contentItemCollectionPreparer(ctx)
514	if err != nil {
515		return result, autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "listByServiceNextResults", nil, "Failure preparing next results request")
516	}
517	if req == nil {
518		return
519	}
520	resp, err := client.ListByServiceSender(req)
521	if err != nil {
522		result.Response = autorest.Response{Response: resp}
523		return result, autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "listByServiceNextResults", resp, "Failure sending next results request")
524	}
525	result, err = client.ListByServiceResponder(resp)
526	if err != nil {
527		err = autorest.NewErrorWithError(err, "apimanagement.ContentItemClient", "listByServiceNextResults", resp, "Failure responding to next results request")
528	}
529	return
530}
531
532// ListByServiceComplete enumerates all values, automatically crossing page boundaries as required.
533func (client ContentItemClient) ListByServiceComplete(ctx context.Context, resourceGroupName string, serviceName string, contentTypeID string) (result ContentItemCollectionIterator, err error) {
534	if tracing.IsEnabled() {
535		ctx = tracing.StartSpan(ctx, fqdn+"/ContentItemClient.ListByService")
536		defer func() {
537			sc := -1
538			if result.Response().Response.Response != nil {
539				sc = result.page.Response().Response.Response.StatusCode
540			}
541			tracing.EndSpan(ctx, sc, err)
542		}()
543	}
544	result.page, err = client.ListByService(ctx, resourceGroupName, serviceName, contentTypeID)
545	return
546}
547