Files
grafana/pkg/tsdb/cloudwatch/models/resources/dimension_keys_request.go
2022-11-22 15:59:11 +01:00

51 lines
1.1 KiB
Go

package resources
import (
"net/url"
)
type DimensionKeysRequestType uint32
const (
StandardDimensionKeysRequest DimensionKeysRequestType = iota
FilterDimensionKeysRequest
)
type DimensionKeysRequest struct {
*ResourceRequest
Namespace string
MetricName string
DimensionFilter []*Dimension
}
func (q *DimensionKeysRequest) Type() DimensionKeysRequestType {
if isCustomNamespace(q.Namespace) || len(q.DimensionFilter) > 0 {
return FilterDimensionKeysRequest
}
return StandardDimensionKeysRequest
}
func GetDimensionKeysRequest(parameters url.Values) (DimensionKeysRequest, error) {
resourceRequest, err := getResourceRequest(parameters)
if err != nil {
return DimensionKeysRequest{}, err
}
request := DimensionKeysRequest{
ResourceRequest: resourceRequest,
Namespace: parameters.Get("namespace"),
MetricName: parameters.Get("metricName"),
DimensionFilter: []*Dimension{},
}
dimensions, err := parseDimensionFilter(parameters.Get("dimensionFilters"))
if err != nil {
return DimensionKeysRequest{}, err
}
request.DimensionFilter = dimensions
return request, nil
}