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// EmailTemplateClient is the apiManagement Client
19type EmailTemplateClient struct {
20	BaseClient
21}
22
23// NewEmailTemplateClient creates an instance of the EmailTemplateClient client.
24func NewEmailTemplateClient(subscriptionID string) EmailTemplateClient {
25	return NewEmailTemplateClientWithBaseURI(DefaultBaseURI, subscriptionID)
26}
27
28// NewEmailTemplateClientWithBaseURI creates an instance of the EmailTemplateClient client using a custom endpoint.
29// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
30func NewEmailTemplateClientWithBaseURI(baseURI string, subscriptionID string) EmailTemplateClient {
31	return EmailTemplateClient{NewWithBaseURI(baseURI, subscriptionID)}
32}
33
34// CreateOrUpdate updates an Email Template.
35// Parameters:
36// resourceGroupName - the name of the resource group.
37// serviceName - the name of the API Management service.
38// templateName - email Template Name Identifier.
39// parameters - email Template update parameters.
40// ifMatch - eTag of the Entity. Not required when creating an entity, but required when updating an entity.
41func (client EmailTemplateClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName, parameters EmailTemplateUpdateParameters, ifMatch string) (result EmailTemplateContract, err error) {
42	if tracing.IsEnabled() {
43		ctx = tracing.StartSpan(ctx, fqdn+"/EmailTemplateClient.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: parameters,
58			Constraints: []validation.Constraint{{Target: "parameters.EmailTemplateUpdateParameterProperties", Name: validation.Null, Rule: false,
59				Chain: []validation.Constraint{{Target: "parameters.EmailTemplateUpdateParameterProperties.Subject", Name: validation.Null, Rule: false,
60					Chain: []validation.Constraint{{Target: "parameters.EmailTemplateUpdateParameterProperties.Subject", Name: validation.MaxLength, Rule: 1000, Chain: nil},
61						{Target: "parameters.EmailTemplateUpdateParameterProperties.Subject", Name: validation.MinLength, Rule: 1, Chain: nil},
62					}},
63					{Target: "parameters.EmailTemplateUpdateParameterProperties.Body", Name: validation.Null, Rule: false,
64						Chain: []validation.Constraint{{Target: "parameters.EmailTemplateUpdateParameterProperties.Body", Name: validation.MinLength, Rule: 1, Chain: nil}}},
65				}}}}}); err != nil {
66		return result, validation.NewError("apimanagement.EmailTemplateClient", "CreateOrUpdate", err.Error())
67	}
68
69	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, serviceName, templateName, parameters, ifMatch)
70	if err != nil {
71		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "CreateOrUpdate", nil, "Failure preparing request")
72		return
73	}
74
75	resp, err := client.CreateOrUpdateSender(req)
76	if err != nil {
77		result.Response = autorest.Response{Response: resp}
78		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "CreateOrUpdate", resp, "Failure sending request")
79		return
80	}
81
82	result, err = client.CreateOrUpdateResponder(resp)
83	if err != nil {
84		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "CreateOrUpdate", resp, "Failure responding to request")
85		return
86	}
87
88	return
89}
90
91// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
92func (client EmailTemplateClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName, parameters EmailTemplateUpdateParameters, ifMatch string) (*http.Request, error) {
93	pathParameters := map[string]interface{}{
94		"resourceGroupName": autorest.Encode("path", resourceGroupName),
95		"serviceName":       autorest.Encode("path", serviceName),
96		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
97		"templateName":      autorest.Encode("path", templateName),
98	}
99
100	const APIVersion = "2020-12-01"
101	queryParameters := map[string]interface{}{
102		"api-version": APIVersion,
103	}
104
105	preparer := autorest.CreatePreparer(
106		autorest.AsContentType("application/json; charset=utf-8"),
107		autorest.AsPut(),
108		autorest.WithBaseURL(client.BaseURI),
109		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", pathParameters),
110		autorest.WithJSON(parameters),
111		autorest.WithQueryParameters(queryParameters))
112	if len(ifMatch) > 0 {
113		preparer = autorest.DecoratePreparer(preparer,
114			autorest.WithHeader("If-Match", autorest.String(ifMatch)))
115	}
116	return preparer.Prepare((&http.Request{}).WithContext(ctx))
117}
118
119// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
120// http.Response Body if it receives an error.
121func (client EmailTemplateClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
122	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
123}
124
125// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
126// closes the http.Response Body.
127func (client EmailTemplateClient) CreateOrUpdateResponder(resp *http.Response) (result EmailTemplateContract, err error) {
128	err = autorest.Respond(
129		resp,
130		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
131		autorest.ByUnmarshallingJSON(&result),
132		autorest.ByClosing())
133	result.Response = autorest.Response{Response: resp}
134	return
135}
136
137// Delete reset the Email Template to default template provided by the API Management service instance.
138// Parameters:
139// resourceGroupName - the name of the resource group.
140// serviceName - the name of the API Management service.
141// templateName - email Template Name Identifier.
142// ifMatch - eTag of the Entity. ETag should match the current entity state from the header response of the GET
143// request or it should be * for unconditional update.
144func (client EmailTemplateClient) Delete(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName, ifMatch string) (result autorest.Response, err error) {
145	if tracing.IsEnabled() {
146		ctx = tracing.StartSpan(ctx, fqdn+"/EmailTemplateClient.Delete")
147		defer func() {
148			sc := -1
149			if result.Response != nil {
150				sc = result.Response.StatusCode
151			}
152			tracing.EndSpan(ctx, sc, err)
153		}()
154	}
155	if err := validation.Validate([]validation.Validation{
156		{TargetValue: serviceName,
157			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
158				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
159				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
160		return result, validation.NewError("apimanagement.EmailTemplateClient", "Delete", err.Error())
161	}
162
163	req, err := client.DeletePreparer(ctx, resourceGroupName, serviceName, templateName, ifMatch)
164	if err != nil {
165		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Delete", nil, "Failure preparing request")
166		return
167	}
168
169	resp, err := client.DeleteSender(req)
170	if err != nil {
171		result.Response = resp
172		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Delete", resp, "Failure sending request")
173		return
174	}
175
176	result, err = client.DeleteResponder(resp)
177	if err != nil {
178		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Delete", resp, "Failure responding to request")
179		return
180	}
181
182	return
183}
184
185// DeletePreparer prepares the Delete request.
186func (client EmailTemplateClient) DeletePreparer(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName, ifMatch string) (*http.Request, error) {
187	pathParameters := map[string]interface{}{
188		"resourceGroupName": autorest.Encode("path", resourceGroupName),
189		"serviceName":       autorest.Encode("path", serviceName),
190		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
191		"templateName":      autorest.Encode("path", templateName),
192	}
193
194	const APIVersion = "2020-12-01"
195	queryParameters := map[string]interface{}{
196		"api-version": APIVersion,
197	}
198
199	preparer := autorest.CreatePreparer(
200		autorest.AsDelete(),
201		autorest.WithBaseURL(client.BaseURI),
202		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", pathParameters),
203		autorest.WithQueryParameters(queryParameters),
204		autorest.WithHeader("If-Match", autorest.String(ifMatch)))
205	return preparer.Prepare((&http.Request{}).WithContext(ctx))
206}
207
208// DeleteSender sends the Delete request. The method will close the
209// http.Response Body if it receives an error.
210func (client EmailTemplateClient) DeleteSender(req *http.Request) (*http.Response, error) {
211	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
212}
213
214// DeleteResponder handles the response to the Delete request. The method always
215// closes the http.Response Body.
216func (client EmailTemplateClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
217	err = autorest.Respond(
218		resp,
219		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
220		autorest.ByClosing())
221	result.Response = resp
222	return
223}
224
225// Get gets the details of the email template specified by its identifier.
226// Parameters:
227// resourceGroupName - the name of the resource group.
228// serviceName - the name of the API Management service.
229// templateName - email Template Name Identifier.
230func (client EmailTemplateClient) Get(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName) (result EmailTemplateContract, err error) {
231	if tracing.IsEnabled() {
232		ctx = tracing.StartSpan(ctx, fqdn+"/EmailTemplateClient.Get")
233		defer func() {
234			sc := -1
235			if result.Response.Response != nil {
236				sc = result.Response.Response.StatusCode
237			}
238			tracing.EndSpan(ctx, sc, err)
239		}()
240	}
241	if err := validation.Validate([]validation.Validation{
242		{TargetValue: serviceName,
243			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
244				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
245				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
246		return result, validation.NewError("apimanagement.EmailTemplateClient", "Get", err.Error())
247	}
248
249	req, err := client.GetPreparer(ctx, resourceGroupName, serviceName, templateName)
250	if err != nil {
251		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Get", nil, "Failure preparing request")
252		return
253	}
254
255	resp, err := client.GetSender(req)
256	if err != nil {
257		result.Response = autorest.Response{Response: resp}
258		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Get", resp, "Failure sending request")
259		return
260	}
261
262	result, err = client.GetResponder(resp)
263	if err != nil {
264		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Get", resp, "Failure responding to request")
265		return
266	}
267
268	return
269}
270
271// GetPreparer prepares the Get request.
272func (client EmailTemplateClient) GetPreparer(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName) (*http.Request, error) {
273	pathParameters := map[string]interface{}{
274		"resourceGroupName": autorest.Encode("path", resourceGroupName),
275		"serviceName":       autorest.Encode("path", serviceName),
276		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
277		"templateName":      autorest.Encode("path", templateName),
278	}
279
280	const APIVersion = "2020-12-01"
281	queryParameters := map[string]interface{}{
282		"api-version": APIVersion,
283	}
284
285	preparer := autorest.CreatePreparer(
286		autorest.AsGet(),
287		autorest.WithBaseURL(client.BaseURI),
288		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", pathParameters),
289		autorest.WithQueryParameters(queryParameters))
290	return preparer.Prepare((&http.Request{}).WithContext(ctx))
291}
292
293// GetSender sends the Get request. The method will close the
294// http.Response Body if it receives an error.
295func (client EmailTemplateClient) GetSender(req *http.Request) (*http.Response, error) {
296	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
297}
298
299// GetResponder handles the response to the Get request. The method always
300// closes the http.Response Body.
301func (client EmailTemplateClient) GetResponder(resp *http.Response) (result EmailTemplateContract, err error) {
302	err = autorest.Respond(
303		resp,
304		azure.WithErrorUnlessStatusCode(http.StatusOK),
305		autorest.ByUnmarshallingJSON(&result),
306		autorest.ByClosing())
307	result.Response = autorest.Response{Response: resp}
308	return
309}
310
311// GetEntityTag gets the entity state (Etag) version of the email template specified by its identifier.
312// Parameters:
313// resourceGroupName - the name of the resource group.
314// serviceName - the name of the API Management service.
315// templateName - email Template Name Identifier.
316func (client EmailTemplateClient) GetEntityTag(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName) (result autorest.Response, err error) {
317	if tracing.IsEnabled() {
318		ctx = tracing.StartSpan(ctx, fqdn+"/EmailTemplateClient.GetEntityTag")
319		defer func() {
320			sc := -1
321			if result.Response != nil {
322				sc = result.Response.StatusCode
323			}
324			tracing.EndSpan(ctx, sc, err)
325		}()
326	}
327	if err := validation.Validate([]validation.Validation{
328		{TargetValue: serviceName,
329			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
330				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
331				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
332		return result, validation.NewError("apimanagement.EmailTemplateClient", "GetEntityTag", err.Error())
333	}
334
335	req, err := client.GetEntityTagPreparer(ctx, resourceGroupName, serviceName, templateName)
336	if err != nil {
337		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "GetEntityTag", nil, "Failure preparing request")
338		return
339	}
340
341	resp, err := client.GetEntityTagSender(req)
342	if err != nil {
343		result.Response = resp
344		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "GetEntityTag", resp, "Failure sending request")
345		return
346	}
347
348	result, err = client.GetEntityTagResponder(resp)
349	if err != nil {
350		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "GetEntityTag", resp, "Failure responding to request")
351		return
352	}
353
354	return
355}
356
357// GetEntityTagPreparer prepares the GetEntityTag request.
358func (client EmailTemplateClient) GetEntityTagPreparer(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName) (*http.Request, error) {
359	pathParameters := map[string]interface{}{
360		"resourceGroupName": autorest.Encode("path", resourceGroupName),
361		"serviceName":       autorest.Encode("path", serviceName),
362		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
363		"templateName":      autorest.Encode("path", templateName),
364	}
365
366	const APIVersion = "2020-12-01"
367	queryParameters := map[string]interface{}{
368		"api-version": APIVersion,
369	}
370
371	preparer := autorest.CreatePreparer(
372		autorest.AsHead(),
373		autorest.WithBaseURL(client.BaseURI),
374		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", pathParameters),
375		autorest.WithQueryParameters(queryParameters))
376	return preparer.Prepare((&http.Request{}).WithContext(ctx))
377}
378
379// GetEntityTagSender sends the GetEntityTag request. The method will close the
380// http.Response Body if it receives an error.
381func (client EmailTemplateClient) GetEntityTagSender(req *http.Request) (*http.Response, error) {
382	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
383}
384
385// GetEntityTagResponder handles the response to the GetEntityTag request. The method always
386// closes the http.Response Body.
387func (client EmailTemplateClient) GetEntityTagResponder(resp *http.Response) (result autorest.Response, err error) {
388	err = autorest.Respond(
389		resp,
390		azure.WithErrorUnlessStatusCode(http.StatusOK),
391		autorest.ByClosing())
392	result.Response = resp
393	return
394}
395
396// ListByService gets all email templates
397// Parameters:
398// resourceGroupName - the name of the resource group.
399// serviceName - the name of the API Management service.
400// filter - |     Field     |     Usage     |     Supported operators     |     Supported functions
401// |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge, le, eq, ne, gt, lt
402// | substringof, contains, startswith, endswith |</br>
403// top - number of records to return.
404// skip - number of records to skip.
405func (client EmailTemplateClient) ListByService(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32) (result EmailTemplateCollectionPage, err error) {
406	if tracing.IsEnabled() {
407		ctx = tracing.StartSpan(ctx, fqdn+"/EmailTemplateClient.ListByService")
408		defer func() {
409			sc := -1
410			if result.etc.Response.Response != nil {
411				sc = result.etc.Response.Response.StatusCode
412			}
413			tracing.EndSpan(ctx, sc, err)
414		}()
415	}
416	if err := validation.Validate([]validation.Validation{
417		{TargetValue: serviceName,
418			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
419				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
420				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}},
421		{TargetValue: top,
422			Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false,
423				Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}},
424		{TargetValue: skip,
425			Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false,
426				Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil {
427		return result, validation.NewError("apimanagement.EmailTemplateClient", "ListByService", err.Error())
428	}
429
430	result.fn = client.listByServiceNextResults
431	req, err := client.ListByServicePreparer(ctx, resourceGroupName, serviceName, filter, top, skip)
432	if err != nil {
433		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "ListByService", nil, "Failure preparing request")
434		return
435	}
436
437	resp, err := client.ListByServiceSender(req)
438	if err != nil {
439		result.etc.Response = autorest.Response{Response: resp}
440		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "ListByService", resp, "Failure sending request")
441		return
442	}
443
444	result.etc, err = client.ListByServiceResponder(resp)
445	if err != nil {
446		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "ListByService", resp, "Failure responding to request")
447		return
448	}
449	if result.etc.hasNextLink() && result.etc.IsEmpty() {
450		err = result.NextWithContext(ctx)
451		return
452	}
453
454	return
455}
456
457// ListByServicePreparer prepares the ListByService request.
458func (client EmailTemplateClient) ListByServicePreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32) (*http.Request, error) {
459	pathParameters := map[string]interface{}{
460		"resourceGroupName": autorest.Encode("path", resourceGroupName),
461		"serviceName":       autorest.Encode("path", serviceName),
462		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
463	}
464
465	const APIVersion = "2020-12-01"
466	queryParameters := map[string]interface{}{
467		"api-version": APIVersion,
468	}
469	if len(filter) > 0 {
470		queryParameters["$filter"] = autorest.Encode("query", filter)
471	}
472	if top != nil {
473		queryParameters["$top"] = autorest.Encode("query", *top)
474	}
475	if skip != nil {
476		queryParameters["$skip"] = autorest.Encode("query", *skip)
477	}
478
479	preparer := autorest.CreatePreparer(
480		autorest.AsGet(),
481		autorest.WithBaseURL(client.BaseURI),
482		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates", pathParameters),
483		autorest.WithQueryParameters(queryParameters))
484	return preparer.Prepare((&http.Request{}).WithContext(ctx))
485}
486
487// ListByServiceSender sends the ListByService request. The method will close the
488// http.Response Body if it receives an error.
489func (client EmailTemplateClient) ListByServiceSender(req *http.Request) (*http.Response, error) {
490	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
491}
492
493// ListByServiceResponder handles the response to the ListByService request. The method always
494// closes the http.Response Body.
495func (client EmailTemplateClient) ListByServiceResponder(resp *http.Response) (result EmailTemplateCollection, err error) {
496	err = autorest.Respond(
497		resp,
498		azure.WithErrorUnlessStatusCode(http.StatusOK),
499		autorest.ByUnmarshallingJSON(&result),
500		autorest.ByClosing())
501	result.Response = autorest.Response{Response: resp}
502	return
503}
504
505// listByServiceNextResults retrieves the next set of results, if any.
506func (client EmailTemplateClient) listByServiceNextResults(ctx context.Context, lastResults EmailTemplateCollection) (result EmailTemplateCollection, err error) {
507	req, err := lastResults.emailTemplateCollectionPreparer(ctx)
508	if err != nil {
509		return result, autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "listByServiceNextResults", nil, "Failure preparing next results request")
510	}
511	if req == nil {
512		return
513	}
514	resp, err := client.ListByServiceSender(req)
515	if err != nil {
516		result.Response = autorest.Response{Response: resp}
517		return result, autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "listByServiceNextResults", resp, "Failure sending next results request")
518	}
519	result, err = client.ListByServiceResponder(resp)
520	if err != nil {
521		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "listByServiceNextResults", resp, "Failure responding to next results request")
522	}
523	return
524}
525
526// ListByServiceComplete enumerates all values, automatically crossing page boundaries as required.
527func (client EmailTemplateClient) ListByServiceComplete(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32) (result EmailTemplateCollectionIterator, err error) {
528	if tracing.IsEnabled() {
529		ctx = tracing.StartSpan(ctx, fqdn+"/EmailTemplateClient.ListByService")
530		defer func() {
531			sc := -1
532			if result.Response().Response.Response != nil {
533				sc = result.page.Response().Response.Response.StatusCode
534			}
535			tracing.EndSpan(ctx, sc, err)
536		}()
537	}
538	result.page, err = client.ListByService(ctx, resourceGroupName, serviceName, filter, top, skip)
539	return
540}
541
542// Update updates API Management email template
543// Parameters:
544// resourceGroupName - the name of the resource group.
545// serviceName - the name of the API Management service.
546// templateName - email Template Name Identifier.
547// ifMatch - eTag of the Entity. ETag should match the current entity state from the header response of the GET
548// request or it should be * for unconditional update.
549// parameters - update parameters.
550func (client EmailTemplateClient) Update(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName, ifMatch string, parameters EmailTemplateUpdateParameters) (result EmailTemplateContract, err error) {
551	if tracing.IsEnabled() {
552		ctx = tracing.StartSpan(ctx, fqdn+"/EmailTemplateClient.Update")
553		defer func() {
554			sc := -1
555			if result.Response.Response != nil {
556				sc = result.Response.Response.StatusCode
557			}
558			tracing.EndSpan(ctx, sc, err)
559		}()
560	}
561	if err := validation.Validate([]validation.Validation{
562		{TargetValue: serviceName,
563			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
564				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
565				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
566		return result, validation.NewError("apimanagement.EmailTemplateClient", "Update", err.Error())
567	}
568
569	req, err := client.UpdatePreparer(ctx, resourceGroupName, serviceName, templateName, ifMatch, parameters)
570	if err != nil {
571		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Update", nil, "Failure preparing request")
572		return
573	}
574
575	resp, err := client.UpdateSender(req)
576	if err != nil {
577		result.Response = autorest.Response{Response: resp}
578		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Update", resp, "Failure sending request")
579		return
580	}
581
582	result, err = client.UpdateResponder(resp)
583	if err != nil {
584		err = autorest.NewErrorWithError(err, "apimanagement.EmailTemplateClient", "Update", resp, "Failure responding to request")
585		return
586	}
587
588	return
589}
590
591// UpdatePreparer prepares the Update request.
592func (client EmailTemplateClient) UpdatePreparer(ctx context.Context, resourceGroupName string, serviceName string, templateName TemplateName, ifMatch string, parameters EmailTemplateUpdateParameters) (*http.Request, error) {
593	pathParameters := map[string]interface{}{
594		"resourceGroupName": autorest.Encode("path", resourceGroupName),
595		"serviceName":       autorest.Encode("path", serviceName),
596		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
597		"templateName":      autorest.Encode("path", templateName),
598	}
599
600	const APIVersion = "2020-12-01"
601	queryParameters := map[string]interface{}{
602		"api-version": APIVersion,
603	}
604
605	preparer := autorest.CreatePreparer(
606		autorest.AsContentType("application/json; charset=utf-8"),
607		autorest.AsPatch(),
608		autorest.WithBaseURL(client.BaseURI),
609		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", pathParameters),
610		autorest.WithJSON(parameters),
611		autorest.WithQueryParameters(queryParameters),
612		autorest.WithHeader("If-Match", autorest.String(ifMatch)))
613	return preparer.Prepare((&http.Request{}).WithContext(ctx))
614}
615
616// UpdateSender sends the Update request. The method will close the
617// http.Response Body if it receives an error.
618func (client EmailTemplateClient) UpdateSender(req *http.Request) (*http.Response, error) {
619	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
620}
621
622// UpdateResponder handles the response to the Update request. The method always
623// closes the http.Response Body.
624func (client EmailTemplateClient) UpdateResponder(resp *http.Response) (result EmailTemplateContract, err error) {
625	err = autorest.Respond(
626		resp,
627		azure.WithErrorUnlessStatusCode(http.StatusOK),
628		autorest.ByUnmarshallingJSON(&result),
629		autorest.ByClosing())
630	result.Response = autorest.Response{Response: resp}
631	return
632}
633