module Network.AWS.CloudWatchLogs.DescribeMetricFilters
(
describeMetricFilters
, DescribeMetricFilters
, dmfFilterNamePrefix
, dmfNextToken
, dmfLimit
, dmfLogGroupName
, describeMetricFiltersResponse
, DescribeMetricFiltersResponse
, dmfrsNextToken
, dmfrsMetricFilters
, dmfrsStatus
) where
import Network.AWS.CloudWatchLogs.Types
import Network.AWS.CloudWatchLogs.Types.Product
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data DescribeMetricFilters = DescribeMetricFilters'
{ _dmfFilterNamePrefix :: !(Maybe Text)
, _dmfNextToken :: !(Maybe Text)
, _dmfLimit :: !(Maybe Nat)
, _dmfLogGroupName :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
describeMetricFilters
:: Text
-> DescribeMetricFilters
describeMetricFilters pLogGroupName_ =
DescribeMetricFilters'
{ _dmfFilterNamePrefix = Nothing
, _dmfNextToken = Nothing
, _dmfLimit = Nothing
, _dmfLogGroupName = pLogGroupName_
}
dmfFilterNamePrefix :: Lens' DescribeMetricFilters (Maybe Text)
dmfFilterNamePrefix = lens _dmfFilterNamePrefix (\ s a -> s{_dmfFilterNamePrefix = a});
dmfNextToken :: Lens' DescribeMetricFilters (Maybe Text)
dmfNextToken = lens _dmfNextToken (\ s a -> s{_dmfNextToken = a});
dmfLimit :: Lens' DescribeMetricFilters (Maybe Natural)
dmfLimit = lens _dmfLimit (\ s a -> s{_dmfLimit = a}) . mapping _Nat;
dmfLogGroupName :: Lens' DescribeMetricFilters Text
dmfLogGroupName = lens _dmfLogGroupName (\ s a -> s{_dmfLogGroupName = a});
instance AWSPager DescribeMetricFilters where
page rq rs
| stop (rs ^. dmfrsNextToken) = Nothing
| stop (rs ^. dmfrsMetricFilters) = Nothing
| otherwise =
Just $ rq & dmfNextToken .~ rs ^. dmfrsNextToken
instance AWSRequest DescribeMetricFilters where
type Sv DescribeMetricFilters = CloudWatchLogs
type Rs DescribeMetricFilters =
DescribeMetricFiltersResponse
request = postJSON
response
= receiveJSON
(\ s h x ->
DescribeMetricFiltersResponse' <$>
(x .?> "nextToken") <*>
(x .?> "metricFilters" .!@ mempty)
<*> (pure (fromEnum s)))
instance ToHeaders DescribeMetricFilters where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("Logs_20140328.DescribeMetricFilters" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON DescribeMetricFilters where
toJSON DescribeMetricFilters'{..}
= object
["filterNamePrefix" .= _dmfFilterNamePrefix,
"nextToken" .= _dmfNextToken, "limit" .= _dmfLimit,
"logGroupName" .= _dmfLogGroupName]
instance ToPath DescribeMetricFilters where
toPath = const "/"
instance ToQuery DescribeMetricFilters where
toQuery = const mempty
data DescribeMetricFiltersResponse = DescribeMetricFiltersResponse'
{ _dmfrsNextToken :: !(Maybe Text)
, _dmfrsMetricFilters :: !(Maybe [MetricFilter])
, _dmfrsStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
describeMetricFiltersResponse
:: Int
-> DescribeMetricFiltersResponse
describeMetricFiltersResponse pStatus_ =
DescribeMetricFiltersResponse'
{ _dmfrsNextToken = Nothing
, _dmfrsMetricFilters = Nothing
, _dmfrsStatus = pStatus_
}
dmfrsNextToken :: Lens' DescribeMetricFiltersResponse (Maybe Text)
dmfrsNextToken = lens _dmfrsNextToken (\ s a -> s{_dmfrsNextToken = a});
dmfrsMetricFilters :: Lens' DescribeMetricFiltersResponse [MetricFilter]
dmfrsMetricFilters = lens _dmfrsMetricFilters (\ s a -> s{_dmfrsMetricFilters = a}) . _Default . _Coerce;
dmfrsStatus :: Lens' DescribeMetricFiltersResponse Int
dmfrsStatus = lens _dmfrsStatus (\ s a -> s{_dmfrsStatus = a});