1package contentmoderator
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	"io"
26	"net/http"
27)
28
29// ListManagementImageClient is the you use the API to scan your content as it is generated. Content Moderator then
30// processes your content and sends the results along with relevant information either back to your systems or to the
31// built-in review tool. You can use this information to take decisions e.g. take it down, send to human judge, etc.
32//
33// When using the API, images need to have a minimum of 128 pixels and a maximum file size of 4MB.
34// Text can be at most 1024 characters long.
35// If the content passed to the text API or the image API exceeds the size limits, the API will return an error code
36// that informs about the issue.
37type ListManagementImageClient struct {
38	BaseClient
39}
40
41// NewListManagementImageClient creates an instance of the ListManagementImageClient client.
42func NewListManagementImageClient(endpoint string) ListManagementImageClient {
43	return ListManagementImageClient{New(endpoint)}
44}
45
46// AddImage add an image to the list with list Id equal to list Id passed.
47// Parameters:
48// listID - list Id of the image list.
49// tag - tag for the image.
50// label - the image label.
51func (client ListManagementImageClient) AddImage(ctx context.Context, listID string, tag *int32, label string) (result Image, err error) {
52	if tracing.IsEnabled() {
53		ctx = tracing.StartSpan(ctx, fqdn+"/ListManagementImageClient.AddImage")
54		defer func() {
55			sc := -1
56			if result.Response.Response != nil {
57				sc = result.Response.Response.StatusCode
58			}
59			tracing.EndSpan(ctx, sc, err)
60		}()
61	}
62	req, err := client.AddImagePreparer(ctx, listID, tag, label)
63	if err != nil {
64		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImage", nil, "Failure preparing request")
65		return
66	}
67
68	resp, err := client.AddImageSender(req)
69	if err != nil {
70		result.Response = autorest.Response{Response: resp}
71		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImage", resp, "Failure sending request")
72		return
73	}
74
75	result, err = client.AddImageResponder(resp)
76	if err != nil {
77		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImage", resp, "Failure responding to request")
78	}
79
80	return
81}
82
83// AddImagePreparer prepares the AddImage request.
84func (client ListManagementImageClient) AddImagePreparer(ctx context.Context, listID string, tag *int32, label string) (*http.Request, error) {
85	urlParameters := map[string]interface{}{
86		"Endpoint": client.Endpoint,
87	}
88
89	pathParameters := map[string]interface{}{
90		"listId": autorest.Encode("path", listID),
91	}
92
93	queryParameters := map[string]interface{}{}
94	if tag != nil {
95		queryParameters["tag"] = autorest.Encode("query", *tag)
96	}
97	if len(label) > 0 {
98		queryParameters["label"] = autorest.Encode("query", label)
99	}
100
101	preparer := autorest.CreatePreparer(
102		autorest.AsPost(),
103		autorest.WithCustomBaseURL("{Endpoint}", urlParameters),
104		autorest.WithPathParameters("/contentmoderator/lists/v1.0/imagelists/{listId}/images", pathParameters),
105		autorest.WithQueryParameters(queryParameters))
106	return preparer.Prepare((&http.Request{}).WithContext(ctx))
107}
108
109// AddImageSender sends the AddImage request. The method will close the
110// http.Response Body if it receives an error.
111func (client ListManagementImageClient) AddImageSender(req *http.Request) (*http.Response, error) {
112	sd := autorest.GetSendDecorators(req.Context(), autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
113	return autorest.SendWithSender(client, req, sd...)
114}
115
116// AddImageResponder handles the response to the AddImage request. The method always
117// closes the http.Response Body.
118func (client ListManagementImageClient) AddImageResponder(resp *http.Response) (result Image, err error) {
119	err = autorest.Respond(
120		resp,
121		client.ByInspecting(),
122		azure.WithErrorUnlessStatusCode(http.StatusOK),
123		autorest.ByUnmarshallingJSON(&result),
124		autorest.ByClosing())
125	result.Response = autorest.Response{Response: resp}
126	return
127}
128
129// AddImageFileInput add an image to the list with list Id equal to list Id passed.
130// Parameters:
131// listID - list Id of the image list.
132// imageStream - the image file.
133// tag - tag for the image.
134// label - the image label.
135func (client ListManagementImageClient) AddImageFileInput(ctx context.Context, listID string, imageStream io.ReadCloser, tag *int32, label string) (result Image, err error) {
136	if tracing.IsEnabled() {
137		ctx = tracing.StartSpan(ctx, fqdn+"/ListManagementImageClient.AddImageFileInput")
138		defer func() {
139			sc := -1
140			if result.Response.Response != nil {
141				sc = result.Response.Response.StatusCode
142			}
143			tracing.EndSpan(ctx, sc, err)
144		}()
145	}
146	req, err := client.AddImageFileInputPreparer(ctx, listID, imageStream, tag, label)
147	if err != nil {
148		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImageFileInput", nil, "Failure preparing request")
149		return
150	}
151
152	resp, err := client.AddImageFileInputSender(req)
153	if err != nil {
154		result.Response = autorest.Response{Response: resp}
155		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImageFileInput", resp, "Failure sending request")
156		return
157	}
158
159	result, err = client.AddImageFileInputResponder(resp)
160	if err != nil {
161		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImageFileInput", resp, "Failure responding to request")
162	}
163
164	return
165}
166
167// AddImageFileInputPreparer prepares the AddImageFileInput request.
168func (client ListManagementImageClient) AddImageFileInputPreparer(ctx context.Context, listID string, imageStream io.ReadCloser, tag *int32, label string) (*http.Request, error) {
169	urlParameters := map[string]interface{}{
170		"Endpoint": client.Endpoint,
171	}
172
173	pathParameters := map[string]interface{}{
174		"listId": autorest.Encode("path", listID),
175	}
176
177	queryParameters := map[string]interface{}{}
178	if tag != nil {
179		queryParameters["tag"] = autorest.Encode("query", *tag)
180	}
181	if len(label) > 0 {
182		queryParameters["label"] = autorest.Encode("query", label)
183	}
184
185	preparer := autorest.CreatePreparer(
186		autorest.AsContentType("image/gif"),
187		autorest.AsPost(),
188		autorest.WithCustomBaseURL("{Endpoint}", urlParameters),
189		autorest.WithPathParameters("/contentmoderator/lists/v1.0/imagelists/{listId}/images", pathParameters),
190		autorest.WithFile(imageStream),
191		autorest.WithQueryParameters(queryParameters))
192	return preparer.Prepare((&http.Request{}).WithContext(ctx))
193}
194
195// AddImageFileInputSender sends the AddImageFileInput request. The method will close the
196// http.Response Body if it receives an error.
197func (client ListManagementImageClient) AddImageFileInputSender(req *http.Request) (*http.Response, error) {
198	sd := autorest.GetSendDecorators(req.Context(), autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
199	return autorest.SendWithSender(client, req, sd...)
200}
201
202// AddImageFileInputResponder handles the response to the AddImageFileInput request. The method always
203// closes the http.Response Body.
204func (client ListManagementImageClient) AddImageFileInputResponder(resp *http.Response) (result Image, err error) {
205	err = autorest.Respond(
206		resp,
207		client.ByInspecting(),
208		azure.WithErrorUnlessStatusCode(http.StatusOK),
209		autorest.ByUnmarshallingJSON(&result),
210		autorest.ByClosing())
211	result.Response = autorest.Response{Response: resp}
212	return
213}
214
215// AddImageURLInput add an image to the list with list Id equal to list Id passed.
216// Parameters:
217// listID - list Id of the image list.
218// contentType - the content type.
219// imageURL - the image url.
220// tag - tag for the image.
221// label - the image label.
222func (client ListManagementImageClient) AddImageURLInput(ctx context.Context, listID string, contentType string, imageURL ImageURL, tag *int32, label string) (result Image, err error) {
223	if tracing.IsEnabled() {
224		ctx = tracing.StartSpan(ctx, fqdn+"/ListManagementImageClient.AddImageURLInput")
225		defer func() {
226			sc := -1
227			if result.Response.Response != nil {
228				sc = result.Response.Response.StatusCode
229			}
230			tracing.EndSpan(ctx, sc, err)
231		}()
232	}
233	req, err := client.AddImageURLInputPreparer(ctx, listID, contentType, imageURL, tag, label)
234	if err != nil {
235		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImageURLInput", nil, "Failure preparing request")
236		return
237	}
238
239	resp, err := client.AddImageURLInputSender(req)
240	if err != nil {
241		result.Response = autorest.Response{Response: resp}
242		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImageURLInput", resp, "Failure sending request")
243		return
244	}
245
246	result, err = client.AddImageURLInputResponder(resp)
247	if err != nil {
248		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "AddImageURLInput", resp, "Failure responding to request")
249	}
250
251	return
252}
253
254// AddImageURLInputPreparer prepares the AddImageURLInput request.
255func (client ListManagementImageClient) AddImageURLInputPreparer(ctx context.Context, listID string, contentType string, imageURL ImageURL, tag *int32, label string) (*http.Request, error) {
256	urlParameters := map[string]interface{}{
257		"Endpoint": client.Endpoint,
258	}
259
260	pathParameters := map[string]interface{}{
261		"listId": autorest.Encode("path", listID),
262	}
263
264	queryParameters := map[string]interface{}{}
265	if tag != nil {
266		queryParameters["tag"] = autorest.Encode("query", *tag)
267	}
268	if len(label) > 0 {
269		queryParameters["label"] = autorest.Encode("query", label)
270	}
271
272	preparer := autorest.CreatePreparer(
273		autorest.AsContentType("application/json; charset=utf-8"),
274		autorest.AsPost(),
275		autorest.WithCustomBaseURL("{Endpoint}", urlParameters),
276		autorest.WithPathParameters("/contentmoderator/lists/v1.0/imagelists/{listId}/images", pathParameters),
277		autorest.WithJSON(imageURL),
278		autorest.WithQueryParameters(queryParameters),
279		autorest.WithHeader("Content-Type", autorest.String(contentType)))
280	return preparer.Prepare((&http.Request{}).WithContext(ctx))
281}
282
283// AddImageURLInputSender sends the AddImageURLInput request. The method will close the
284// http.Response Body if it receives an error.
285func (client ListManagementImageClient) AddImageURLInputSender(req *http.Request) (*http.Response, error) {
286	sd := autorest.GetSendDecorators(req.Context(), autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
287	return autorest.SendWithSender(client, req, sd...)
288}
289
290// AddImageURLInputResponder handles the response to the AddImageURLInput request. The method always
291// closes the http.Response Body.
292func (client ListManagementImageClient) AddImageURLInputResponder(resp *http.Response) (result Image, err error) {
293	err = autorest.Respond(
294		resp,
295		client.ByInspecting(),
296		azure.WithErrorUnlessStatusCode(http.StatusOK),
297		autorest.ByUnmarshallingJSON(&result),
298		autorest.ByClosing())
299	result.Response = autorest.Response{Response: resp}
300	return
301}
302
303// DeleteAllImages deletes all images from the list with list Id equal to list Id passed.
304// Parameters:
305// listID - list Id of the image list.
306func (client ListManagementImageClient) DeleteAllImages(ctx context.Context, listID string) (result String, err error) {
307	if tracing.IsEnabled() {
308		ctx = tracing.StartSpan(ctx, fqdn+"/ListManagementImageClient.DeleteAllImages")
309		defer func() {
310			sc := -1
311			if result.Response.Response != nil {
312				sc = result.Response.Response.StatusCode
313			}
314			tracing.EndSpan(ctx, sc, err)
315		}()
316	}
317	req, err := client.DeleteAllImagesPreparer(ctx, listID)
318	if err != nil {
319		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "DeleteAllImages", nil, "Failure preparing request")
320		return
321	}
322
323	resp, err := client.DeleteAllImagesSender(req)
324	if err != nil {
325		result.Response = autorest.Response{Response: resp}
326		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "DeleteAllImages", resp, "Failure sending request")
327		return
328	}
329
330	result, err = client.DeleteAllImagesResponder(resp)
331	if err != nil {
332		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "DeleteAllImages", resp, "Failure responding to request")
333	}
334
335	return
336}
337
338// DeleteAllImagesPreparer prepares the DeleteAllImages request.
339func (client ListManagementImageClient) DeleteAllImagesPreparer(ctx context.Context, listID string) (*http.Request, error) {
340	urlParameters := map[string]interface{}{
341		"Endpoint": client.Endpoint,
342	}
343
344	pathParameters := map[string]interface{}{
345		"listId": autorest.Encode("path", listID),
346	}
347
348	preparer := autorest.CreatePreparer(
349		autorest.AsDelete(),
350		autorest.WithCustomBaseURL("{Endpoint}", urlParameters),
351		autorest.WithPathParameters("/contentmoderator/lists/v1.0/imagelists/{listId}/images", pathParameters))
352	return preparer.Prepare((&http.Request{}).WithContext(ctx))
353}
354
355// DeleteAllImagesSender sends the DeleteAllImages request. The method will close the
356// http.Response Body if it receives an error.
357func (client ListManagementImageClient) DeleteAllImagesSender(req *http.Request) (*http.Response, error) {
358	sd := autorest.GetSendDecorators(req.Context(), autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
359	return autorest.SendWithSender(client, req, sd...)
360}
361
362// DeleteAllImagesResponder handles the response to the DeleteAllImages request. The method always
363// closes the http.Response Body.
364func (client ListManagementImageClient) DeleteAllImagesResponder(resp *http.Response) (result String, err error) {
365	err = autorest.Respond(
366		resp,
367		client.ByInspecting(),
368		azure.WithErrorUnlessStatusCode(http.StatusOK),
369		autorest.ByUnmarshallingJSON(&result.Value),
370		autorest.ByClosing())
371	result.Response = autorest.Response{Response: resp}
372	return
373}
374
375// DeleteImage deletes an image from the list with list Id and image Id passed.
376// Parameters:
377// listID - list Id of the image list.
378// imageID - id of the image.
379func (client ListManagementImageClient) DeleteImage(ctx context.Context, listID string, imageID string) (result String, err error) {
380	if tracing.IsEnabled() {
381		ctx = tracing.StartSpan(ctx, fqdn+"/ListManagementImageClient.DeleteImage")
382		defer func() {
383			sc := -1
384			if result.Response.Response != nil {
385				sc = result.Response.Response.StatusCode
386			}
387			tracing.EndSpan(ctx, sc, err)
388		}()
389	}
390	req, err := client.DeleteImagePreparer(ctx, listID, imageID)
391	if err != nil {
392		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "DeleteImage", nil, "Failure preparing request")
393		return
394	}
395
396	resp, err := client.DeleteImageSender(req)
397	if err != nil {
398		result.Response = autorest.Response{Response: resp}
399		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "DeleteImage", resp, "Failure sending request")
400		return
401	}
402
403	result, err = client.DeleteImageResponder(resp)
404	if err != nil {
405		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "DeleteImage", resp, "Failure responding to request")
406	}
407
408	return
409}
410
411// DeleteImagePreparer prepares the DeleteImage request.
412func (client ListManagementImageClient) DeleteImagePreparer(ctx context.Context, listID string, imageID string) (*http.Request, error) {
413	urlParameters := map[string]interface{}{
414		"Endpoint": client.Endpoint,
415	}
416
417	pathParameters := map[string]interface{}{
418		"ImageId": autorest.Encode("path", imageID),
419		"listId":  autorest.Encode("path", listID),
420	}
421
422	preparer := autorest.CreatePreparer(
423		autorest.AsDelete(),
424		autorest.WithCustomBaseURL("{Endpoint}", urlParameters),
425		autorest.WithPathParameters("/contentmoderator/lists/v1.0/imagelists/{listId}/images/{ImageId}", pathParameters))
426	return preparer.Prepare((&http.Request{}).WithContext(ctx))
427}
428
429// DeleteImageSender sends the DeleteImage request. The method will close the
430// http.Response Body if it receives an error.
431func (client ListManagementImageClient) DeleteImageSender(req *http.Request) (*http.Response, error) {
432	sd := autorest.GetSendDecorators(req.Context(), autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
433	return autorest.SendWithSender(client, req, sd...)
434}
435
436// DeleteImageResponder handles the response to the DeleteImage request. The method always
437// closes the http.Response Body.
438func (client ListManagementImageClient) DeleteImageResponder(resp *http.Response) (result String, err error) {
439	err = autorest.Respond(
440		resp,
441		client.ByInspecting(),
442		azure.WithErrorUnlessStatusCode(http.StatusOK),
443		autorest.ByUnmarshallingJSON(&result.Value),
444		autorest.ByClosing())
445	result.Response = autorest.Response{Response: resp}
446	return
447}
448
449// GetAllImageIds gets all image Ids from the list with list Id equal to list Id passed.
450// Parameters:
451// listID - list Id of the image list.
452func (client ListManagementImageClient) GetAllImageIds(ctx context.Context, listID string) (result ImageIds, err error) {
453	if tracing.IsEnabled() {
454		ctx = tracing.StartSpan(ctx, fqdn+"/ListManagementImageClient.GetAllImageIds")
455		defer func() {
456			sc := -1
457			if result.Response.Response != nil {
458				sc = result.Response.Response.StatusCode
459			}
460			tracing.EndSpan(ctx, sc, err)
461		}()
462	}
463	req, err := client.GetAllImageIdsPreparer(ctx, listID)
464	if err != nil {
465		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "GetAllImageIds", nil, "Failure preparing request")
466		return
467	}
468
469	resp, err := client.GetAllImageIdsSender(req)
470	if err != nil {
471		result.Response = autorest.Response{Response: resp}
472		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "GetAllImageIds", resp, "Failure sending request")
473		return
474	}
475
476	result, err = client.GetAllImageIdsResponder(resp)
477	if err != nil {
478		err = autorest.NewErrorWithError(err, "contentmoderator.ListManagementImageClient", "GetAllImageIds", resp, "Failure responding to request")
479	}
480
481	return
482}
483
484// GetAllImageIdsPreparer prepares the GetAllImageIds request.
485func (client ListManagementImageClient) GetAllImageIdsPreparer(ctx context.Context, listID string) (*http.Request, error) {
486	urlParameters := map[string]interface{}{
487		"Endpoint": client.Endpoint,
488	}
489
490	pathParameters := map[string]interface{}{
491		"listId": autorest.Encode("path", listID),
492	}
493
494	preparer := autorest.CreatePreparer(
495		autorest.AsGet(),
496		autorest.WithCustomBaseURL("{Endpoint}", urlParameters),
497		autorest.WithPathParameters("/contentmoderator/lists/v1.0/imagelists/{listId}/images", pathParameters))
498	return preparer.Prepare((&http.Request{}).WithContext(ctx))
499}
500
501// GetAllImageIdsSender sends the GetAllImageIds request. The method will close the
502// http.Response Body if it receives an error.
503func (client ListManagementImageClient) GetAllImageIdsSender(req *http.Request) (*http.Response, error) {
504	sd := autorest.GetSendDecorators(req.Context(), autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
505	return autorest.SendWithSender(client, req, sd...)
506}
507
508// GetAllImageIdsResponder handles the response to the GetAllImageIds request. The method always
509// closes the http.Response Body.
510func (client ListManagementImageClient) GetAllImageIdsResponder(resp *http.Response) (result ImageIds, err error) {
511	err = autorest.Respond(
512		resp,
513		client.ByInspecting(),
514		azure.WithErrorUnlessStatusCode(http.StatusOK),
515		autorest.ByUnmarshallingJSON(&result),
516		autorest.ByClosing())
517	result.Response = autorest.Response{Response: resp}
518	return
519}
520