1package apimanagement
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/autorest/validation"
25	"github.com/Azure/go-autorest/tracing"
26	"net/http"
27)
28
29// TenantAccessClient is the apiManagement Client
30type TenantAccessClient struct {
31	BaseClient
32}
33
34// NewTenantAccessClient creates an instance of the TenantAccessClient client.
35func NewTenantAccessClient(subscriptionID string) TenantAccessClient {
36	return NewTenantAccessClientWithBaseURI(DefaultBaseURI, subscriptionID)
37}
38
39// NewTenantAccessClientWithBaseURI creates an instance of the TenantAccessClient client.
40func NewTenantAccessClientWithBaseURI(baseURI string, subscriptionID string) TenantAccessClient {
41	return TenantAccessClient{NewWithBaseURI(baseURI, subscriptionID)}
42}
43
44// Get get tenant access information details
45// Parameters:
46// resourceGroupName - the name of the resource group.
47// serviceName - the name of the API Management service.
48func (client TenantAccessClient) Get(ctx context.Context, resourceGroupName string, serviceName string) (result AccessInformationContract, err error) {
49	if tracing.IsEnabled() {
50		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessClient.Get")
51		defer func() {
52			sc := -1
53			if result.Response.Response != nil {
54				sc = result.Response.Response.StatusCode
55			}
56			tracing.EndSpan(ctx, sc, err)
57		}()
58	}
59	if err := validation.Validate([]validation.Validation{
60		{TargetValue: serviceName,
61			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
62				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
63				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
64		return result, validation.NewError("apimanagement.TenantAccessClient", "Get", err.Error())
65	}
66
67	req, err := client.GetPreparer(ctx, resourceGroupName, serviceName)
68	if err != nil {
69		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "Get", nil, "Failure preparing request")
70		return
71	}
72
73	resp, err := client.GetSender(req)
74	if err != nil {
75		result.Response = autorest.Response{Response: resp}
76		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "Get", resp, "Failure sending request")
77		return
78	}
79
80	result, err = client.GetResponder(resp)
81	if err != nil {
82		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "Get", resp, "Failure responding to request")
83	}
84
85	return
86}
87
88// GetPreparer prepares the Get request.
89func (client TenantAccessClient) GetPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) {
90	pathParameters := map[string]interface{}{
91		"accessName":        autorest.Encode("path", "access"),
92		"resourceGroupName": autorest.Encode("path", resourceGroupName),
93		"serviceName":       autorest.Encode("path", serviceName),
94		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
95	}
96
97	const APIVersion = "2019-01-01"
98	queryParameters := map[string]interface{}{
99		"api-version": APIVersion,
100	}
101
102	preparer := autorest.CreatePreparer(
103		autorest.AsGet(),
104		autorest.WithBaseURL(client.BaseURI),
105		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}", pathParameters),
106		autorest.WithQueryParameters(queryParameters))
107	return preparer.Prepare((&http.Request{}).WithContext(ctx))
108}
109
110// GetSender sends the Get request. The method will close the
111// http.Response Body if it receives an error.
112func (client TenantAccessClient) GetSender(req *http.Request) (*http.Response, error) {
113	sd := autorest.GetSendDecorators(req.Context(), azure.DoRetryWithRegistration(client.Client))
114	return autorest.SendWithSender(client, req, sd...)
115}
116
117// GetResponder handles the response to the Get request. The method always
118// closes the http.Response Body.
119func (client TenantAccessClient) GetResponder(resp *http.Response) (result AccessInformationContract, err error) {
120	err = autorest.Respond(
121		resp,
122		client.ByInspecting(),
123		azure.WithErrorUnlessStatusCode(http.StatusOK),
124		autorest.ByUnmarshallingJSON(&result),
125		autorest.ByClosing())
126	result.Response = autorest.Response{Response: resp}
127	return
128}
129
130// GetEntityTag tenant access metadata
131// Parameters:
132// resourceGroupName - the name of the resource group.
133// serviceName - the name of the API Management service.
134func (client TenantAccessClient) GetEntityTag(ctx context.Context, resourceGroupName string, serviceName string) (result autorest.Response, err error) {
135	if tracing.IsEnabled() {
136		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessClient.GetEntityTag")
137		defer func() {
138			sc := -1
139			if result.Response != nil {
140				sc = result.Response.StatusCode
141			}
142			tracing.EndSpan(ctx, sc, err)
143		}()
144	}
145	if err := validation.Validate([]validation.Validation{
146		{TargetValue: serviceName,
147			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
148				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
149				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
150		return result, validation.NewError("apimanagement.TenantAccessClient", "GetEntityTag", err.Error())
151	}
152
153	req, err := client.GetEntityTagPreparer(ctx, resourceGroupName, serviceName)
154	if err != nil {
155		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "GetEntityTag", nil, "Failure preparing request")
156		return
157	}
158
159	resp, err := client.GetEntityTagSender(req)
160	if err != nil {
161		result.Response = resp
162		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "GetEntityTag", resp, "Failure sending request")
163		return
164	}
165
166	result, err = client.GetEntityTagResponder(resp)
167	if err != nil {
168		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "GetEntityTag", resp, "Failure responding to request")
169	}
170
171	return
172}
173
174// GetEntityTagPreparer prepares the GetEntityTag request.
175func (client TenantAccessClient) GetEntityTagPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) {
176	pathParameters := map[string]interface{}{
177		"accessName":        autorest.Encode("path", "access"),
178		"resourceGroupName": autorest.Encode("path", resourceGroupName),
179		"serviceName":       autorest.Encode("path", serviceName),
180		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
181	}
182
183	const APIVersion = "2019-01-01"
184	queryParameters := map[string]interface{}{
185		"api-version": APIVersion,
186	}
187
188	preparer := autorest.CreatePreparer(
189		autorest.AsHead(),
190		autorest.WithBaseURL(client.BaseURI),
191		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}", pathParameters),
192		autorest.WithQueryParameters(queryParameters))
193	return preparer.Prepare((&http.Request{}).WithContext(ctx))
194}
195
196// GetEntityTagSender sends the GetEntityTag request. The method will close the
197// http.Response Body if it receives an error.
198func (client TenantAccessClient) GetEntityTagSender(req *http.Request) (*http.Response, error) {
199	sd := autorest.GetSendDecorators(req.Context(), azure.DoRetryWithRegistration(client.Client))
200	return autorest.SendWithSender(client, req, sd...)
201}
202
203// GetEntityTagResponder handles the response to the GetEntityTag request. The method always
204// closes the http.Response Body.
205func (client TenantAccessClient) GetEntityTagResponder(resp *http.Response) (result autorest.Response, err error) {
206	err = autorest.Respond(
207		resp,
208		client.ByInspecting(),
209		azure.WithErrorUnlessStatusCode(http.StatusOK),
210		autorest.ByClosing())
211	result.Response = resp
212	return
213}
214
215// RegeneratePrimaryKey regenerate primary access key
216// Parameters:
217// resourceGroupName - the name of the resource group.
218// serviceName - the name of the API Management service.
219func (client TenantAccessClient) RegeneratePrimaryKey(ctx context.Context, resourceGroupName string, serviceName string) (result autorest.Response, err error) {
220	if tracing.IsEnabled() {
221		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessClient.RegeneratePrimaryKey")
222		defer func() {
223			sc := -1
224			if result.Response != nil {
225				sc = result.Response.StatusCode
226			}
227			tracing.EndSpan(ctx, sc, err)
228		}()
229	}
230	if err := validation.Validate([]validation.Validation{
231		{TargetValue: serviceName,
232			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
233				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
234				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
235		return result, validation.NewError("apimanagement.TenantAccessClient", "RegeneratePrimaryKey", err.Error())
236	}
237
238	req, err := client.RegeneratePrimaryKeyPreparer(ctx, resourceGroupName, serviceName)
239	if err != nil {
240		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "RegeneratePrimaryKey", nil, "Failure preparing request")
241		return
242	}
243
244	resp, err := client.RegeneratePrimaryKeySender(req)
245	if err != nil {
246		result.Response = resp
247		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "RegeneratePrimaryKey", resp, "Failure sending request")
248		return
249	}
250
251	result, err = client.RegeneratePrimaryKeyResponder(resp)
252	if err != nil {
253		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "RegeneratePrimaryKey", resp, "Failure responding to request")
254	}
255
256	return
257}
258
259// RegeneratePrimaryKeyPreparer prepares the RegeneratePrimaryKey request.
260func (client TenantAccessClient) RegeneratePrimaryKeyPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) {
261	pathParameters := map[string]interface{}{
262		"accessName":        autorest.Encode("path", "access"),
263		"resourceGroupName": autorest.Encode("path", resourceGroupName),
264		"serviceName":       autorest.Encode("path", serviceName),
265		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
266	}
267
268	const APIVersion = "2019-01-01"
269	queryParameters := map[string]interface{}{
270		"api-version": APIVersion,
271	}
272
273	preparer := autorest.CreatePreparer(
274		autorest.AsPost(),
275		autorest.WithBaseURL(client.BaseURI),
276		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/regeneratePrimaryKey", pathParameters),
277		autorest.WithQueryParameters(queryParameters))
278	return preparer.Prepare((&http.Request{}).WithContext(ctx))
279}
280
281// RegeneratePrimaryKeySender sends the RegeneratePrimaryKey request. The method will close the
282// http.Response Body if it receives an error.
283func (client TenantAccessClient) RegeneratePrimaryKeySender(req *http.Request) (*http.Response, error) {
284	sd := autorest.GetSendDecorators(req.Context(), azure.DoRetryWithRegistration(client.Client))
285	return autorest.SendWithSender(client, req, sd...)
286}
287
288// RegeneratePrimaryKeyResponder handles the response to the RegeneratePrimaryKey request. The method always
289// closes the http.Response Body.
290func (client TenantAccessClient) RegeneratePrimaryKeyResponder(resp *http.Response) (result autorest.Response, err error) {
291	err = autorest.Respond(
292		resp,
293		client.ByInspecting(),
294		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
295		autorest.ByClosing())
296	result.Response = resp
297	return
298}
299
300// RegenerateSecondaryKey regenerate secondary access key
301// Parameters:
302// resourceGroupName - the name of the resource group.
303// serviceName - the name of the API Management service.
304func (client TenantAccessClient) RegenerateSecondaryKey(ctx context.Context, resourceGroupName string, serviceName string) (result autorest.Response, err error) {
305	if tracing.IsEnabled() {
306		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessClient.RegenerateSecondaryKey")
307		defer func() {
308			sc := -1
309			if result.Response != nil {
310				sc = result.Response.StatusCode
311			}
312			tracing.EndSpan(ctx, sc, err)
313		}()
314	}
315	if err := validation.Validate([]validation.Validation{
316		{TargetValue: serviceName,
317			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
318				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
319				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
320		return result, validation.NewError("apimanagement.TenantAccessClient", "RegenerateSecondaryKey", err.Error())
321	}
322
323	req, err := client.RegenerateSecondaryKeyPreparer(ctx, resourceGroupName, serviceName)
324	if err != nil {
325		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "RegenerateSecondaryKey", nil, "Failure preparing request")
326		return
327	}
328
329	resp, err := client.RegenerateSecondaryKeySender(req)
330	if err != nil {
331		result.Response = resp
332		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "RegenerateSecondaryKey", resp, "Failure sending request")
333		return
334	}
335
336	result, err = client.RegenerateSecondaryKeyResponder(resp)
337	if err != nil {
338		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "RegenerateSecondaryKey", resp, "Failure responding to request")
339	}
340
341	return
342}
343
344// RegenerateSecondaryKeyPreparer prepares the RegenerateSecondaryKey request.
345func (client TenantAccessClient) RegenerateSecondaryKeyPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) {
346	pathParameters := map[string]interface{}{
347		"accessName":        autorest.Encode("path", "access"),
348		"resourceGroupName": autorest.Encode("path", resourceGroupName),
349		"serviceName":       autorest.Encode("path", serviceName),
350		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
351	}
352
353	const APIVersion = "2019-01-01"
354	queryParameters := map[string]interface{}{
355		"api-version": APIVersion,
356	}
357
358	preparer := autorest.CreatePreparer(
359		autorest.AsPost(),
360		autorest.WithBaseURL(client.BaseURI),
361		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/regenerateSecondaryKey", pathParameters),
362		autorest.WithQueryParameters(queryParameters))
363	return preparer.Prepare((&http.Request{}).WithContext(ctx))
364}
365
366// RegenerateSecondaryKeySender sends the RegenerateSecondaryKey request. The method will close the
367// http.Response Body if it receives an error.
368func (client TenantAccessClient) RegenerateSecondaryKeySender(req *http.Request) (*http.Response, error) {
369	sd := autorest.GetSendDecorators(req.Context(), azure.DoRetryWithRegistration(client.Client))
370	return autorest.SendWithSender(client, req, sd...)
371}
372
373// RegenerateSecondaryKeyResponder handles the response to the RegenerateSecondaryKey request. The method always
374// closes the http.Response Body.
375func (client TenantAccessClient) RegenerateSecondaryKeyResponder(resp *http.Response) (result autorest.Response, err error) {
376	err = autorest.Respond(
377		resp,
378		client.ByInspecting(),
379		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
380		autorest.ByClosing())
381	result.Response = resp
382	return
383}
384
385// Update update tenant access information details.
386// Parameters:
387// resourceGroupName - the name of the resource group.
388// serviceName - the name of the API Management service.
389// parameters - parameters supplied to retrieve the Tenant Access Information.
390// ifMatch - eTag of the Entity. ETag should match the current entity state from the header response of the GET
391// request or it should be * for unconditional update.
392func (client TenantAccessClient) Update(ctx context.Context, resourceGroupName string, serviceName string, parameters AccessInformationUpdateParameters, ifMatch string) (result autorest.Response, err error) {
393	if tracing.IsEnabled() {
394		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessClient.Update")
395		defer func() {
396			sc := -1
397			if result.Response != nil {
398				sc = result.Response.StatusCode
399			}
400			tracing.EndSpan(ctx, sc, err)
401		}()
402	}
403	if err := validation.Validate([]validation.Validation{
404		{TargetValue: serviceName,
405			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
406				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
407				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
408		return result, validation.NewError("apimanagement.TenantAccessClient", "Update", err.Error())
409	}
410
411	req, err := client.UpdatePreparer(ctx, resourceGroupName, serviceName, parameters, ifMatch)
412	if err != nil {
413		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "Update", nil, "Failure preparing request")
414		return
415	}
416
417	resp, err := client.UpdateSender(req)
418	if err != nil {
419		result.Response = resp
420		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "Update", resp, "Failure sending request")
421		return
422	}
423
424	result, err = client.UpdateResponder(resp)
425	if err != nil {
426		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessClient", "Update", resp, "Failure responding to request")
427	}
428
429	return
430}
431
432// UpdatePreparer prepares the Update request.
433func (client TenantAccessClient) UpdatePreparer(ctx context.Context, resourceGroupName string, serviceName string, parameters AccessInformationUpdateParameters, ifMatch string) (*http.Request, error) {
434	pathParameters := map[string]interface{}{
435		"accessName":        autorest.Encode("path", "access"),
436		"resourceGroupName": autorest.Encode("path", resourceGroupName),
437		"serviceName":       autorest.Encode("path", serviceName),
438		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
439	}
440
441	const APIVersion = "2019-01-01"
442	queryParameters := map[string]interface{}{
443		"api-version": APIVersion,
444	}
445
446	preparer := autorest.CreatePreparer(
447		autorest.AsContentType("application/json; charset=utf-8"),
448		autorest.AsPatch(),
449		autorest.WithBaseURL(client.BaseURI),
450		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}", pathParameters),
451		autorest.WithJSON(parameters),
452		autorest.WithQueryParameters(queryParameters),
453		autorest.WithHeader("If-Match", autorest.String(ifMatch)))
454	return preparer.Prepare((&http.Request{}).WithContext(ctx))
455}
456
457// UpdateSender sends the Update request. The method will close the
458// http.Response Body if it receives an error.
459func (client TenantAccessClient) UpdateSender(req *http.Request) (*http.Response, error) {
460	sd := autorest.GetSendDecorators(req.Context(), azure.DoRetryWithRegistration(client.Client))
461	return autorest.SendWithSender(client, req, sd...)
462}
463
464// UpdateResponder handles the response to the Update request. The method always
465// closes the http.Response Body.
466func (client TenantAccessClient) UpdateResponder(resp *http.Response) (result autorest.Response, err error) {
467	err = autorest.Respond(
468		resp,
469		client.ByInspecting(),
470		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
471		autorest.ByClosing())
472	result.Response = resp
473	return
474}
475