module Network.AWS.CloudWatch.ListMetrics
(
listMetrics
, ListMetrics
, lmMetricName
, lmNamespace
, lmNextToken
, lmDimensions
, listMetricsResponse
, ListMetricsResponse
, lmrsMetrics
, lmrsNextToken
, lmrsResponseStatus
) where
import Network.AWS.CloudWatch.Types
import Network.AWS.CloudWatch.Types.Product
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data ListMetrics = ListMetrics'
{ _lmMetricName :: !(Maybe Text)
, _lmNamespace :: !(Maybe Text)
, _lmNextToken :: !(Maybe Text)
, _lmDimensions :: !(Maybe [DimensionFilter])
} deriving (Eq,Read,Show,Data,Typeable,Generic)
listMetrics
:: ListMetrics
listMetrics =
ListMetrics'
{ _lmMetricName = Nothing
, _lmNamespace = Nothing
, _lmNextToken = Nothing
, _lmDimensions = Nothing
}
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});
lmDimensions :: Lens' ListMetrics [DimensionFilter]
lmDimensions = lens _lmDimensions (\ s a -> s{_lmDimensions = a}) . _Default . _Coerce;
instance AWSPager ListMetrics where
page rq rs
| stop (rs ^. lmrsNextToken) = Nothing
| stop (rs ^. lmrsMetrics) = Nothing
| otherwise =
Just $ rq & lmNextToken .~ rs ^. lmrsNextToken
instance AWSRequest ListMetrics where
type Rs ListMetrics = ListMetricsResponse
request = postQuery cloudWatch
response
= receiveXMLWrapper "ListMetricsResult"
(\ s h x ->
ListMetricsResponse' <$>
(x .@? "Metrics" .!@ mempty >>=
may (parseXMLList "member"))
<*> (x .@? "NextToken")
<*> (pure (fromEnum s)))
instance ToHeaders ListMetrics where
toHeaders = const mempty
instance ToPath ListMetrics where
toPath = const "/"
instance ToQuery ListMetrics where
toQuery ListMetrics'{..}
= mconcat
["Action" =: ("ListMetrics" :: ByteString),
"Version" =: ("2010-08-01" :: ByteString),
"MetricName" =: _lmMetricName,
"Namespace" =: _lmNamespace,
"NextToken" =: _lmNextToken,
"Dimensions" =:
toQuery (toQueryList "member" <$> _lmDimensions)]
data ListMetricsResponse = ListMetricsResponse'
{ _lmrsMetrics :: !(Maybe [Metric])
, _lmrsNextToken :: !(Maybe Text)
, _lmrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
listMetricsResponse
:: Int
-> ListMetricsResponse
listMetricsResponse pResponseStatus_ =
ListMetricsResponse'
{ _lmrsMetrics = Nothing
, _lmrsNextToken = Nothing
, _lmrsResponseStatus = pResponseStatus_
}
lmrsMetrics :: Lens' ListMetricsResponse [Metric]
lmrsMetrics = lens _lmrsMetrics (\ s a -> s{_lmrsMetrics = a}) . _Default . _Coerce;
lmrsNextToken :: Lens' ListMetricsResponse (Maybe Text)
lmrsNextToken = lens _lmrsNextToken (\ s a -> s{_lmrsNextToken = a});
lmrsResponseStatus :: Lens' ListMetricsResponse Int
lmrsResponseStatus = lens _lmrsResponseStatus (\ s a -> s{_lmrsResponseStatus = a});