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