module Network.AWS.CloudWatch.ListMetrics
(
ListMetrics
, listMetrics
, lmDimensions
, lmMetricName
, lmNamespace
, lmNextToken
, ListMetricsResponse
, listMetricsResponse
, lmrMetrics
, lmrNextToken
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.CloudWatch.Types
import qualified GHC.Exts
data ListMetrics = ListMetrics
{ _lmDimensions :: List "member" DimensionFilter
, _lmMetricName :: Maybe Text
, _lmNamespace :: Maybe Text
, _lmNextToken :: Maybe Text
} deriving (Eq, Show)
listMetrics :: ListMetrics
listMetrics = ListMetrics
{ _lmNamespace = Nothing
, _lmMetricName = Nothing
, _lmDimensions = mempty
, _lmNextToken = Nothing
}
lmDimensions :: Lens' ListMetrics [DimensionFilter]
lmDimensions = lens _lmDimensions (\s a -> s { _lmDimensions = a }) . _List
lmMetricName :: Lens' ListMetrics (Maybe Text)
lmMetricName = lens _lmMetricName (\s a -> s { _lmMetricName = a })
lmNamespace :: Lens' ListMetrics (Maybe Text)
lmNamespace = lens _lmNamespace (\s a -> s { _lmNamespace = a })
lmNextToken :: Lens' ListMetrics (Maybe Text)
lmNextToken = lens _lmNextToken (\s a -> s { _lmNextToken = a })
data ListMetricsResponse = ListMetricsResponse
{ _lmrMetrics :: List "member" Metric
, _lmrNextToken :: Maybe Text
} deriving (Eq, Show)
listMetricsResponse :: ListMetricsResponse
listMetricsResponse = ListMetricsResponse
{ _lmrMetrics = mempty
, _lmrNextToken = Nothing
}
lmrMetrics :: Lens' ListMetricsResponse [Metric]
lmrMetrics = lens _lmrMetrics (\s a -> s { _lmrMetrics = a }) . _List
lmrNextToken :: Lens' ListMetricsResponse (Maybe Text)
lmrNextToken = lens _lmrNextToken (\s a -> s { _lmrNextToken = a })
instance ToPath ListMetrics where
toPath = const "/"
instance ToQuery ListMetrics where
toQuery ListMetrics{..} = mconcat
[ "Dimensions" =? _lmDimensions
, "MetricName" =? _lmMetricName
, "Namespace" =? _lmNamespace
, "NextToken" =? _lmNextToken
]
instance ToHeaders ListMetrics
instance AWSRequest ListMetrics where
type Sv ListMetrics = CloudWatch
type Rs ListMetrics = ListMetricsResponse
request = post "ListMetrics"
response = xmlResponse
instance FromXML ListMetricsResponse where
parseXML = withElement "ListMetricsResult" $ \x -> ListMetricsResponse
<$> x .@ "Metrics"
<*> x .@? "NextToken"
instance AWSPager ListMetrics where
page rq rs
| stop (rq ^. lmNextToken) = Nothing
| otherwise = (\x -> rq & lmNextToken ?~ x)
<$> (rs ^. lmrNextToken)