1package insights
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// APIKeysClient is the composite Swagger for Application Insights Management Client
19type APIKeysClient struct {
20	BaseClient
21}
22
23// NewAPIKeysClient creates an instance of the APIKeysClient client.
24func NewAPIKeysClient(subscriptionID string) APIKeysClient {
25	return NewAPIKeysClientWithBaseURI(DefaultBaseURI, subscriptionID)
26}
27
28// NewAPIKeysClientWithBaseURI creates an instance of the APIKeysClient client using a custom endpoint.  Use this when
29// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
30func NewAPIKeysClientWithBaseURI(baseURI string, subscriptionID string) APIKeysClient {
31	return APIKeysClient{NewWithBaseURI(baseURI, subscriptionID)}
32}
33
34// Create create an API Key of an Application Insights component.
35// Parameters:
36// resourceGroupName - the name of the resource group. The name is case insensitive.
37// resourceName - the name of the Application Insights component resource.
38// APIKeyProperties - properties that need to be specified to create an API key of a Application Insights
39// component.
40func (client APIKeysClient) Create(ctx context.Context, resourceGroupName string, resourceName string, APIKeyProperties APIKeyRequest) (result ApplicationInsightsComponentAPIKey, err error) {
41	if tracing.IsEnabled() {
42		ctx = tracing.StartSpan(ctx, fqdn+"/APIKeysClient.Create")
43		defer func() {
44			sc := -1
45			if result.Response.Response != nil {
46				sc = result.Response.Response.StatusCode
47			}
48			tracing.EndSpan(ctx, sc, err)
49		}()
50	}
51	if err := validation.Validate([]validation.Validation{
52		{TargetValue: resourceGroupName,
53			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
54				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
55				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}},
56		{TargetValue: client.SubscriptionID,
57			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
58		return result, validation.NewError("insights.APIKeysClient", "Create", err.Error())
59	}
60
61	req, err := client.CreatePreparer(ctx, resourceGroupName, resourceName, APIKeyProperties)
62	if err != nil {
63		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Create", nil, "Failure preparing request")
64		return
65	}
66
67	resp, err := client.CreateSender(req)
68	if err != nil {
69		result.Response = autorest.Response{Response: resp}
70		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Create", resp, "Failure sending request")
71		return
72	}
73
74	result, err = client.CreateResponder(resp)
75	if err != nil {
76		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Create", resp, "Failure responding to request")
77		return
78	}
79
80	return
81}
82
83// CreatePreparer prepares the Create request.
84func (client APIKeysClient) CreatePreparer(ctx context.Context, resourceGroupName string, resourceName string, APIKeyProperties APIKeyRequest) (*http.Request, error) {
85	pathParameters := map[string]interface{}{
86		"resourceGroupName": autorest.Encode("path", resourceGroupName),
87		"resourceName":      autorest.Encode("path", resourceName),
88		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
89	}
90
91	const APIVersion = "2015-05-01"
92	queryParameters := map[string]interface{}{
93		"api-version": APIVersion,
94	}
95
96	preparer := autorest.CreatePreparer(
97		autorest.AsContentType("application/json; charset=utf-8"),
98		autorest.AsPost(),
99		autorest.WithBaseURL(client.BaseURI),
100		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/ApiKeys", pathParameters),
101		autorest.WithJSON(APIKeyProperties),
102		autorest.WithQueryParameters(queryParameters))
103	return preparer.Prepare((&http.Request{}).WithContext(ctx))
104}
105
106// CreateSender sends the Create request. The method will close the
107// http.Response Body if it receives an error.
108func (client APIKeysClient) CreateSender(req *http.Request) (*http.Response, error) {
109	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
110}
111
112// CreateResponder handles the response to the Create request. The method always
113// closes the http.Response Body.
114func (client APIKeysClient) CreateResponder(resp *http.Response) (result ApplicationInsightsComponentAPIKey, err error) {
115	err = autorest.Respond(
116		resp,
117		azure.WithErrorUnlessStatusCode(http.StatusOK),
118		autorest.ByUnmarshallingJSON(&result),
119		autorest.ByClosing())
120	result.Response = autorest.Response{Response: resp}
121	return
122}
123
124// Delete delete an API Key of an Application Insights component.
125// Parameters:
126// resourceGroupName - the name of the resource group. The name is case insensitive.
127// resourceName - the name of the Application Insights component resource.
128// keyID - the API Key ID. This is unique within a Application Insights component.
129func (client APIKeysClient) Delete(ctx context.Context, resourceGroupName string, resourceName string, keyID string) (result ApplicationInsightsComponentAPIKey, err error) {
130	if tracing.IsEnabled() {
131		ctx = tracing.StartSpan(ctx, fqdn+"/APIKeysClient.Delete")
132		defer func() {
133			sc := -1
134			if result.Response.Response != nil {
135				sc = result.Response.Response.StatusCode
136			}
137			tracing.EndSpan(ctx, sc, err)
138		}()
139	}
140	if err := validation.Validate([]validation.Validation{
141		{TargetValue: resourceGroupName,
142			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
143				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
144				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}},
145		{TargetValue: client.SubscriptionID,
146			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
147		return result, validation.NewError("insights.APIKeysClient", "Delete", err.Error())
148	}
149
150	req, err := client.DeletePreparer(ctx, resourceGroupName, resourceName, keyID)
151	if err != nil {
152		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Delete", nil, "Failure preparing request")
153		return
154	}
155
156	resp, err := client.DeleteSender(req)
157	if err != nil {
158		result.Response = autorest.Response{Response: resp}
159		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Delete", resp, "Failure sending request")
160		return
161	}
162
163	result, err = client.DeleteResponder(resp)
164	if err != nil {
165		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Delete", resp, "Failure responding to request")
166		return
167	}
168
169	return
170}
171
172// DeletePreparer prepares the Delete request.
173func (client APIKeysClient) DeletePreparer(ctx context.Context, resourceGroupName string, resourceName string, keyID string) (*http.Request, error) {
174	pathParameters := map[string]interface{}{
175		"keyId":             autorest.Encode("path", keyID),
176		"resourceGroupName": autorest.Encode("path", resourceGroupName),
177		"resourceName":      autorest.Encode("path", resourceName),
178		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
179	}
180
181	const APIVersion = "2015-05-01"
182	queryParameters := map[string]interface{}{
183		"api-version": APIVersion,
184	}
185
186	preparer := autorest.CreatePreparer(
187		autorest.AsDelete(),
188		autorest.WithBaseURL(client.BaseURI),
189		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/APIKeys/{keyId}", pathParameters),
190		autorest.WithQueryParameters(queryParameters))
191	return preparer.Prepare((&http.Request{}).WithContext(ctx))
192}
193
194// DeleteSender sends the Delete request. The method will close the
195// http.Response Body if it receives an error.
196func (client APIKeysClient) DeleteSender(req *http.Request) (*http.Response, error) {
197	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
198}
199
200// DeleteResponder handles the response to the Delete request. The method always
201// closes the http.Response Body.
202func (client APIKeysClient) DeleteResponder(resp *http.Response) (result ApplicationInsightsComponentAPIKey, err error) {
203	err = autorest.Respond(
204		resp,
205		azure.WithErrorUnlessStatusCode(http.StatusOK),
206		autorest.ByUnmarshallingJSON(&result),
207		autorest.ByClosing())
208	result.Response = autorest.Response{Response: resp}
209	return
210}
211
212// Get get the API Key for this key id.
213// Parameters:
214// resourceGroupName - the name of the resource group. The name is case insensitive.
215// resourceName - the name of the Application Insights component resource.
216// keyID - the API Key ID. This is unique within a Application Insights component.
217func (client APIKeysClient) Get(ctx context.Context, resourceGroupName string, resourceName string, keyID string) (result ApplicationInsightsComponentAPIKey, err error) {
218	if tracing.IsEnabled() {
219		ctx = tracing.StartSpan(ctx, fqdn+"/APIKeysClient.Get")
220		defer func() {
221			sc := -1
222			if result.Response.Response != nil {
223				sc = result.Response.Response.StatusCode
224			}
225			tracing.EndSpan(ctx, sc, err)
226		}()
227	}
228	if err := validation.Validate([]validation.Validation{
229		{TargetValue: resourceGroupName,
230			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
231				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
232				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}},
233		{TargetValue: client.SubscriptionID,
234			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
235		return result, validation.NewError("insights.APIKeysClient", "Get", err.Error())
236	}
237
238	req, err := client.GetPreparer(ctx, resourceGroupName, resourceName, keyID)
239	if err != nil {
240		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Get", nil, "Failure preparing request")
241		return
242	}
243
244	resp, err := client.GetSender(req)
245	if err != nil {
246		result.Response = autorest.Response{Response: resp}
247		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Get", resp, "Failure sending request")
248		return
249	}
250
251	result, err = client.GetResponder(resp)
252	if err != nil {
253		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "Get", resp, "Failure responding to request")
254		return
255	}
256
257	return
258}
259
260// GetPreparer prepares the Get request.
261func (client APIKeysClient) GetPreparer(ctx context.Context, resourceGroupName string, resourceName string, keyID string) (*http.Request, error) {
262	pathParameters := map[string]interface{}{
263		"keyId":             autorest.Encode("path", keyID),
264		"resourceGroupName": autorest.Encode("path", resourceGroupName),
265		"resourceName":      autorest.Encode("path", resourceName),
266		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
267	}
268
269	const APIVersion = "2015-05-01"
270	queryParameters := map[string]interface{}{
271		"api-version": APIVersion,
272	}
273
274	preparer := autorest.CreatePreparer(
275		autorest.AsGet(),
276		autorest.WithBaseURL(client.BaseURI),
277		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/APIKeys/{keyId}", pathParameters),
278		autorest.WithQueryParameters(queryParameters))
279	return preparer.Prepare((&http.Request{}).WithContext(ctx))
280}
281
282// GetSender sends the Get request. The method will close the
283// http.Response Body if it receives an error.
284func (client APIKeysClient) GetSender(req *http.Request) (*http.Response, error) {
285	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
286}
287
288// GetResponder handles the response to the Get request. The method always
289// closes the http.Response Body.
290func (client APIKeysClient) GetResponder(resp *http.Response) (result ApplicationInsightsComponentAPIKey, err error) {
291	err = autorest.Respond(
292		resp,
293		azure.WithErrorUnlessStatusCode(http.StatusOK),
294		autorest.ByUnmarshallingJSON(&result),
295		autorest.ByClosing())
296	result.Response = autorest.Response{Response: resp}
297	return
298}
299
300// List gets a list of API keys of an Application Insights component.
301// Parameters:
302// resourceGroupName - the name of the resource group. The name is case insensitive.
303// resourceName - the name of the Application Insights component resource.
304func (client APIKeysClient) List(ctx context.Context, resourceGroupName string, resourceName string) (result ApplicationInsightsComponentAPIKeyListResult, err error) {
305	if tracing.IsEnabled() {
306		ctx = tracing.StartSpan(ctx, fqdn+"/APIKeysClient.List")
307		defer func() {
308			sc := -1
309			if result.Response.Response != nil {
310				sc = result.Response.Response.StatusCode
311			}
312			tracing.EndSpan(ctx, sc, err)
313		}()
314	}
315	if err := validation.Validate([]validation.Validation{
316		{TargetValue: resourceGroupName,
317			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
318				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
319				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}},
320		{TargetValue: client.SubscriptionID,
321			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
322		return result, validation.NewError("insights.APIKeysClient", "List", err.Error())
323	}
324
325	req, err := client.ListPreparer(ctx, resourceGroupName, resourceName)
326	if err != nil {
327		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "List", nil, "Failure preparing request")
328		return
329	}
330
331	resp, err := client.ListSender(req)
332	if err != nil {
333		result.Response = autorest.Response{Response: resp}
334		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "List", resp, "Failure sending request")
335		return
336	}
337
338	result, err = client.ListResponder(resp)
339	if err != nil {
340		err = autorest.NewErrorWithError(err, "insights.APIKeysClient", "List", resp, "Failure responding to request")
341		return
342	}
343
344	return
345}
346
347// ListPreparer prepares the List request.
348func (client APIKeysClient) ListPreparer(ctx context.Context, resourceGroupName string, resourceName string) (*http.Request, error) {
349	pathParameters := map[string]interface{}{
350		"resourceGroupName": autorest.Encode("path", resourceGroupName),
351		"resourceName":      autorest.Encode("path", resourceName),
352		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
353	}
354
355	const APIVersion = "2015-05-01"
356	queryParameters := map[string]interface{}{
357		"api-version": APIVersion,
358	}
359
360	preparer := autorest.CreatePreparer(
361		autorest.AsGet(),
362		autorest.WithBaseURL(client.BaseURI),
363		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/ApiKeys", pathParameters),
364		autorest.WithQueryParameters(queryParameters))
365	return preparer.Prepare((&http.Request{}).WithContext(ctx))
366}
367
368// ListSender sends the List request. The method will close the
369// http.Response Body if it receives an error.
370func (client APIKeysClient) ListSender(req *http.Request) (*http.Response, error) {
371	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
372}
373
374// ListResponder handles the response to the List request. The method always
375// closes the http.Response Body.
376func (client APIKeysClient) ListResponder(resp *http.Response) (result ApplicationInsightsComponentAPIKeyListResult, err error) {
377	err = autorest.Respond(
378		resp,
379		azure.WithErrorUnlessStatusCode(http.StatusOK),
380		autorest.ByUnmarshallingJSON(&result),
381		autorest.ByClosing())
382	result.Response = autorest.Response{Response: resp}
383	return
384}
385