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// TenantAccessGitClient is the apiManagement Client
19type TenantAccessGitClient struct {
20	BaseClient
21}
22
23// NewTenantAccessGitClient creates an instance of the TenantAccessGitClient client.
24func NewTenantAccessGitClient(subscriptionID string) TenantAccessGitClient {
25	return NewTenantAccessGitClientWithBaseURI(DefaultBaseURI, subscriptionID)
26}
27
28// NewTenantAccessGitClientWithBaseURI creates an instance of the TenantAccessGitClient 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 NewTenantAccessGitClientWithBaseURI(baseURI string, subscriptionID string) TenantAccessGitClient {
31	return TenantAccessGitClient{NewWithBaseURI(baseURI, subscriptionID)}
32}
33
34// Get gets the Git access configuration for the tenant. Without secrets.
35// Parameters:
36// resourceGroupName - the name of the resource group.
37// serviceName - the name of the API Management service.
38func (client TenantAccessGitClient) Get(ctx context.Context, resourceGroupName string, serviceName string) (result AccessInformationContract, err error) {
39	if tracing.IsEnabled() {
40		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessGitClient.Get")
41		defer func() {
42			sc := -1
43			if result.Response.Response != nil {
44				sc = result.Response.Response.StatusCode
45			}
46			tracing.EndSpan(ctx, sc, err)
47		}()
48	}
49	if err := validation.Validate([]validation.Validation{
50		{TargetValue: serviceName,
51			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
52				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
53				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
54		return result, validation.NewError("apimanagement.TenantAccessGitClient", "Get", err.Error())
55	}
56
57	req, err := client.GetPreparer(ctx, resourceGroupName, serviceName)
58	if err != nil {
59		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "Get", nil, "Failure preparing request")
60		return
61	}
62
63	resp, err := client.GetSender(req)
64	if err != nil {
65		result.Response = autorest.Response{Response: resp}
66		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "Get", resp, "Failure sending request")
67		return
68	}
69
70	result, err = client.GetResponder(resp)
71	if err != nil {
72		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "Get", resp, "Failure responding to request")
73		return
74	}
75
76	return
77}
78
79// GetPreparer prepares the Get request.
80func (client TenantAccessGitClient) GetPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) {
81	pathParameters := map[string]interface{}{
82		"accessName":        autorest.Encode("path", "access"),
83		"resourceGroupName": autorest.Encode("path", resourceGroupName),
84		"serviceName":       autorest.Encode("path", serviceName),
85		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
86	}
87
88	const APIVersion = "2019-12-01-preview"
89	queryParameters := map[string]interface{}{
90		"api-version": APIVersion,
91	}
92
93	preparer := autorest.CreatePreparer(
94		autorest.AsGet(),
95		autorest.WithBaseURL(client.BaseURI),
96		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/git", pathParameters),
97		autorest.WithQueryParameters(queryParameters))
98	return preparer.Prepare((&http.Request{}).WithContext(ctx))
99}
100
101// GetSender sends the Get request. The method will close the
102// http.Response Body if it receives an error.
103func (client TenantAccessGitClient) GetSender(req *http.Request) (*http.Response, error) {
104	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
105}
106
107// GetResponder handles the response to the Get request. The method always
108// closes the http.Response Body.
109func (client TenantAccessGitClient) GetResponder(resp *http.Response) (result AccessInformationContract, err error) {
110	err = autorest.Respond(
111		resp,
112		azure.WithErrorUnlessStatusCode(http.StatusOK),
113		autorest.ByUnmarshallingJSON(&result),
114		autorest.ByClosing())
115	result.Response = autorest.Response{Response: resp}
116	return
117}
118
119// ListSecrets gets the Git access configuration for the tenant.
120// Parameters:
121// resourceGroupName - the name of the resource group.
122// serviceName - the name of the API Management service.
123func (client TenantAccessGitClient) ListSecrets(ctx context.Context, resourceGroupName string, serviceName string) (result AccessInformationContract, err error) {
124	if tracing.IsEnabled() {
125		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessGitClient.ListSecrets")
126		defer func() {
127			sc := -1
128			if result.Response.Response != nil {
129				sc = result.Response.Response.StatusCode
130			}
131			tracing.EndSpan(ctx, sc, err)
132		}()
133	}
134	if err := validation.Validate([]validation.Validation{
135		{TargetValue: serviceName,
136			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
137				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
138				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
139		return result, validation.NewError("apimanagement.TenantAccessGitClient", "ListSecrets", err.Error())
140	}
141
142	req, err := client.ListSecretsPreparer(ctx, resourceGroupName, serviceName)
143	if err != nil {
144		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "ListSecrets", nil, "Failure preparing request")
145		return
146	}
147
148	resp, err := client.ListSecretsSender(req)
149	if err != nil {
150		result.Response = autorest.Response{Response: resp}
151		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "ListSecrets", resp, "Failure sending request")
152		return
153	}
154
155	result, err = client.ListSecretsResponder(resp)
156	if err != nil {
157		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "ListSecrets", resp, "Failure responding to request")
158		return
159	}
160
161	return
162}
163
164// ListSecretsPreparer prepares the ListSecrets request.
165func (client TenantAccessGitClient) ListSecretsPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) {
166	pathParameters := map[string]interface{}{
167		"accessName":        autorest.Encode("path", "access"),
168		"resourceGroupName": autorest.Encode("path", resourceGroupName),
169		"serviceName":       autorest.Encode("path", serviceName),
170		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
171	}
172
173	const APIVersion = "2019-12-01-preview"
174	queryParameters := map[string]interface{}{
175		"api-version": APIVersion,
176	}
177
178	preparer := autorest.CreatePreparer(
179		autorest.AsPost(),
180		autorest.WithBaseURL(client.BaseURI),
181		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/git/listSecrets", pathParameters),
182		autorest.WithQueryParameters(queryParameters))
183	return preparer.Prepare((&http.Request{}).WithContext(ctx))
184}
185
186// ListSecretsSender sends the ListSecrets request. The method will close the
187// http.Response Body if it receives an error.
188func (client TenantAccessGitClient) ListSecretsSender(req *http.Request) (*http.Response, error) {
189	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
190}
191
192// ListSecretsResponder handles the response to the ListSecrets request. The method always
193// closes the http.Response Body.
194func (client TenantAccessGitClient) ListSecretsResponder(resp *http.Response) (result AccessInformationContract, err error) {
195	err = autorest.Respond(
196		resp,
197		azure.WithErrorUnlessStatusCode(http.StatusOK),
198		autorest.ByUnmarshallingJSON(&result),
199		autorest.ByClosing())
200	result.Response = autorest.Response{Response: resp}
201	return
202}
203
204// RegeneratePrimaryKey regenerate primary access key for GIT.
205// Parameters:
206// resourceGroupName - the name of the resource group.
207// serviceName - the name of the API Management service.
208func (client TenantAccessGitClient) RegeneratePrimaryKey(ctx context.Context, resourceGroupName string, serviceName string) (result autorest.Response, err error) {
209	if tracing.IsEnabled() {
210		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessGitClient.RegeneratePrimaryKey")
211		defer func() {
212			sc := -1
213			if result.Response != nil {
214				sc = result.Response.StatusCode
215			}
216			tracing.EndSpan(ctx, sc, err)
217		}()
218	}
219	if err := validation.Validate([]validation.Validation{
220		{TargetValue: serviceName,
221			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
222				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
223				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
224		return result, validation.NewError("apimanagement.TenantAccessGitClient", "RegeneratePrimaryKey", err.Error())
225	}
226
227	req, err := client.RegeneratePrimaryKeyPreparer(ctx, resourceGroupName, serviceName)
228	if err != nil {
229		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "RegeneratePrimaryKey", nil, "Failure preparing request")
230		return
231	}
232
233	resp, err := client.RegeneratePrimaryKeySender(req)
234	if err != nil {
235		result.Response = resp
236		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "RegeneratePrimaryKey", resp, "Failure sending request")
237		return
238	}
239
240	result, err = client.RegeneratePrimaryKeyResponder(resp)
241	if err != nil {
242		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "RegeneratePrimaryKey", resp, "Failure responding to request")
243		return
244	}
245
246	return
247}
248
249// RegeneratePrimaryKeyPreparer prepares the RegeneratePrimaryKey request.
250func (client TenantAccessGitClient) RegeneratePrimaryKeyPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) {
251	pathParameters := map[string]interface{}{
252		"accessName":        autorest.Encode("path", "access"),
253		"resourceGroupName": autorest.Encode("path", resourceGroupName),
254		"serviceName":       autorest.Encode("path", serviceName),
255		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
256	}
257
258	const APIVersion = "2019-12-01-preview"
259	queryParameters := map[string]interface{}{
260		"api-version": APIVersion,
261	}
262
263	preparer := autorest.CreatePreparer(
264		autorest.AsPost(),
265		autorest.WithBaseURL(client.BaseURI),
266		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/git/regeneratePrimaryKey", pathParameters),
267		autorest.WithQueryParameters(queryParameters))
268	return preparer.Prepare((&http.Request{}).WithContext(ctx))
269}
270
271// RegeneratePrimaryKeySender sends the RegeneratePrimaryKey request. The method will close the
272// http.Response Body if it receives an error.
273func (client TenantAccessGitClient) RegeneratePrimaryKeySender(req *http.Request) (*http.Response, error) {
274	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
275}
276
277// RegeneratePrimaryKeyResponder handles the response to the RegeneratePrimaryKey request. The method always
278// closes the http.Response Body.
279func (client TenantAccessGitClient) RegeneratePrimaryKeyResponder(resp *http.Response) (result autorest.Response, err error) {
280	err = autorest.Respond(
281		resp,
282		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
283		autorest.ByClosing())
284	result.Response = resp
285	return
286}
287
288// RegenerateSecondaryKey regenerate secondary access key for GIT.
289// Parameters:
290// resourceGroupName - the name of the resource group.
291// serviceName - the name of the API Management service.
292func (client TenantAccessGitClient) RegenerateSecondaryKey(ctx context.Context, resourceGroupName string, serviceName string) (result autorest.Response, err error) {
293	if tracing.IsEnabled() {
294		ctx = tracing.StartSpan(ctx, fqdn+"/TenantAccessGitClient.RegenerateSecondaryKey")
295		defer func() {
296			sc := -1
297			if result.Response != nil {
298				sc = result.Response.StatusCode
299			}
300			tracing.EndSpan(ctx, sc, err)
301		}()
302	}
303	if err := validation.Validate([]validation.Validation{
304		{TargetValue: serviceName,
305			Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil},
306				{Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil},
307				{Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}}); err != nil {
308		return result, validation.NewError("apimanagement.TenantAccessGitClient", "RegenerateSecondaryKey", err.Error())
309	}
310
311	req, err := client.RegenerateSecondaryKeyPreparer(ctx, resourceGroupName, serviceName)
312	if err != nil {
313		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "RegenerateSecondaryKey", nil, "Failure preparing request")
314		return
315	}
316
317	resp, err := client.RegenerateSecondaryKeySender(req)
318	if err != nil {
319		result.Response = resp
320		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "RegenerateSecondaryKey", resp, "Failure sending request")
321		return
322	}
323
324	result, err = client.RegenerateSecondaryKeyResponder(resp)
325	if err != nil {
326		err = autorest.NewErrorWithError(err, "apimanagement.TenantAccessGitClient", "RegenerateSecondaryKey", resp, "Failure responding to request")
327		return
328	}
329
330	return
331}
332
333// RegenerateSecondaryKeyPreparer prepares the RegenerateSecondaryKey request.
334func (client TenantAccessGitClient) RegenerateSecondaryKeyPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) {
335	pathParameters := map[string]interface{}{
336		"accessName":        autorest.Encode("path", "access"),
337		"resourceGroupName": autorest.Encode("path", resourceGroupName),
338		"serviceName":       autorest.Encode("path", serviceName),
339		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
340	}
341
342	const APIVersion = "2019-12-01-preview"
343	queryParameters := map[string]interface{}{
344		"api-version": APIVersion,
345	}
346
347	preparer := autorest.CreatePreparer(
348		autorest.AsPost(),
349		autorest.WithBaseURL(client.BaseURI),
350		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/git/regenerateSecondaryKey", pathParameters),
351		autorest.WithQueryParameters(queryParameters))
352	return preparer.Prepare((&http.Request{}).WithContext(ctx))
353}
354
355// RegenerateSecondaryKeySender sends the RegenerateSecondaryKey request. The method will close the
356// http.Response Body if it receives an error.
357func (client TenantAccessGitClient) RegenerateSecondaryKeySender(req *http.Request) (*http.Response, error) {
358	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
359}
360
361// RegenerateSecondaryKeyResponder handles the response to the RegenerateSecondaryKey request. The method always
362// closes the http.Response Body.
363func (client TenantAccessGitClient) RegenerateSecondaryKeyResponder(resp *http.Response) (result autorest.Response, err error) {
364	err = autorest.Respond(
365		resp,
366		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
367		autorest.ByClosing())
368	result.Response = resp
369	return
370}
371