{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.CloudWatchLogs.DescribeMetricFilters
(
describeMetricFilters
, DescribeMetricFilters
, dmfFilterNamePrefix
, dmfNextToken
, dmfLimit
, dmfLogGroupName
, describeMetricFiltersResponse
, DescribeMetricFiltersResponse
, dmfrsNextToken
, dmfrsMetricFilters
, dmfrsResponseStatus
) where
import Network.AWS.CloudWatchLogs.Types
import Network.AWS.CloudWatchLogs.Types.Product
import Network.AWS.Lens
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 Rs DescribeMetricFilters =
DescribeMetricFiltersResponse
request = postJSON cloudWatchLogs
response
= receiveJSON
(\ s h x ->
DescribeMetricFiltersResponse' <$>
(x .?> "nextToken") <*>
(x .?> "metricFilters" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable DescribeMetricFilters
instance NFData DescribeMetricFilters
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
(catMaybes
[("filterNamePrefix" .=) <$> _dmfFilterNamePrefix,
("nextToken" .=) <$> _dmfNextToken,
("limit" .=) <$> _dmfLimit,
Just ("logGroupName" .= _dmfLogGroupName)])
instance ToPath DescribeMetricFilters where
toPath = const "/"
instance ToQuery DescribeMetricFilters where
toQuery = const mempty
data DescribeMetricFiltersResponse = DescribeMetricFiltersResponse'
{ _dmfrsNextToken :: !(Maybe Text)
, _dmfrsMetricFilters :: !(Maybe [MetricFilter])
, _dmfrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
describeMetricFiltersResponse
:: Int
-> DescribeMetricFiltersResponse
describeMetricFiltersResponse pResponseStatus_ =
DescribeMetricFiltersResponse'
{ _dmfrsNextToken = Nothing
, _dmfrsMetricFilters = Nothing
, _dmfrsResponseStatus = pResponseStatus_
}
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;
dmfrsResponseStatus :: Lens' DescribeMetricFiltersResponse Int
dmfrsResponseStatus = lens _dmfrsResponseStatus (\ s a -> s{_dmfrsResponseStatus = a});
instance NFData DescribeMetricFiltersResponse