1// +build go1.13
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// Code generated by Microsoft (R) AutoRest Code Generator.
6// Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
8package armmonitor
9
10import (
11	"context"
12	"errors"
13	"fmt"
14	"github.com/Azure/azure-sdk-for-go/sdk/armcore"
15	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
16	"net/http"
17	"strings"
18)
19
20// BaselinesClient contains the methods for the Baselines group.
21// Don't use this type directly, use NewBaselinesClient() instead.
22type BaselinesClient struct {
23	con *armcore.Connection
24}
25
26// NewBaselinesClient creates a new instance of BaselinesClient with the specified values.
27func NewBaselinesClient(con *armcore.Connection) *BaselinesClient {
28	return &BaselinesClient{con: con}
29}
30
31// List - Lists the metric baseline values for a resource.
32// If the operation fails it returns the *ErrorResponse error type.
33func (client *BaselinesClient) List(ctx context.Context, resourceURI string, options *BaselinesListOptions) (MetricBaselinesResponseResponse, error) {
34	req, err := client.listCreateRequest(ctx, resourceURI, options)
35	if err != nil {
36		return MetricBaselinesResponseResponse{}, err
37	}
38	resp, err := client.con.Pipeline().Do(req)
39	if err != nil {
40		return MetricBaselinesResponseResponse{}, err
41	}
42	if !resp.HasStatusCode(http.StatusOK) {
43		return MetricBaselinesResponseResponse{}, client.listHandleError(resp)
44	}
45	return client.listHandleResponse(resp)
46}
47
48// listCreateRequest creates the List request.
49func (client *BaselinesClient) listCreateRequest(ctx context.Context, resourceURI string, options *BaselinesListOptions) (*azcore.Request, error) {
50	urlPath := "/{resourceUri}/providers/Microsoft.Insights/metricBaselines"
51	if resourceURI == "" {
52		return nil, errors.New("parameter resourceURI cannot be empty")
53	}
54	urlPath = strings.ReplaceAll(urlPath, "{resourceUri}", resourceURI)
55	req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath))
56	if err != nil {
57		return nil, err
58	}
59	req.Telemetry(telemetryInfo)
60	reqQP := req.URL.Query()
61	if options != nil && options.Metricnames != nil {
62		reqQP.Set("metricnames", *options.Metricnames)
63	}
64	if options != nil && options.Metricnamespace != nil {
65		reqQP.Set("metricnamespace", *options.Metricnamespace)
66	}
67	if options != nil && options.Timespan != nil {
68		reqQP.Set("timespan", *options.Timespan)
69	}
70	if options != nil && options.Interval != nil {
71		reqQP.Set("interval", *options.Interval)
72	}
73	if options != nil && options.Aggregation != nil {
74		reqQP.Set("aggregation", *options.Aggregation)
75	}
76	if options != nil && options.Sensitivities != nil {
77		reqQP.Set("sensitivities", *options.Sensitivities)
78	}
79	if options != nil && options.Filter != nil {
80		reqQP.Set("$filter", *options.Filter)
81	}
82	if options != nil && options.ResultType != nil {
83		reqQP.Set("resultType", string(*options.ResultType))
84	}
85	reqQP.Set("api-version", "2019-03-01")
86	req.URL.RawQuery = reqQP.Encode()
87	req.Header.Set("Accept", "application/json")
88	return req, nil
89}
90
91// listHandleResponse handles the List response.
92func (client *BaselinesClient) listHandleResponse(resp *azcore.Response) (MetricBaselinesResponseResponse, error) {
93	var val *MetricBaselinesResponse
94	if err := resp.UnmarshalAsJSON(&val); err != nil {
95		return MetricBaselinesResponseResponse{}, err
96	}
97	return MetricBaselinesResponseResponse{RawResponse: resp.Response, MetricBaselinesResponse: val}, nil
98}
99
100// listHandleError handles the List error response.
101func (client *BaselinesClient) listHandleError(resp *azcore.Response) error {
102	body, err := resp.Payload()
103	if err != nil {
104		return azcore.NewResponseError(err, resp.Response)
105	}
106	errType := ErrorResponse{raw: string(body)}
107	if err := resp.UnmarshalAsJSON(&errType); err != nil {
108		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
109	}
110	return azcore.NewResponseError(&errType, resp.Response)
111}
112