module Network.AWS.AutoScaling.DescribePolicies
(
DescribePolicies
, describePolicies
, dp1AutoScalingGroupName
, dp1MaxRecords
, dp1NextToken
, dp1PolicyNames
, DescribePoliciesResponse
, describePoliciesResponse
, dprNextToken
, dprScalingPolicies
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.AutoScaling.Types
import qualified GHC.Exts
data DescribePolicies = DescribePolicies
{ _dp1AutoScalingGroupName :: Maybe Text
, _dp1MaxRecords :: Maybe Int
, _dp1NextToken :: Maybe Text
, _dp1PolicyNames :: List "member" Text
} deriving (Eq, Ord, Read, Show)
describePolicies :: DescribePolicies
describePolicies = DescribePolicies
{ _dp1AutoScalingGroupName = Nothing
, _dp1PolicyNames = mempty
, _dp1NextToken = Nothing
, _dp1MaxRecords = Nothing
}
dp1AutoScalingGroupName :: Lens' DescribePolicies (Maybe Text)
dp1AutoScalingGroupName =
lens _dp1AutoScalingGroupName (\s a -> s { _dp1AutoScalingGroupName = a })
dp1MaxRecords :: Lens' DescribePolicies (Maybe Int)
dp1MaxRecords = lens _dp1MaxRecords (\s a -> s { _dp1MaxRecords = a })
dp1NextToken :: Lens' DescribePolicies (Maybe Text)
dp1NextToken = lens _dp1NextToken (\s a -> s { _dp1NextToken = a })
dp1PolicyNames :: Lens' DescribePolicies [Text]
dp1PolicyNames = lens _dp1PolicyNames (\s a -> s { _dp1PolicyNames = a }) . _List
data DescribePoliciesResponse = DescribePoliciesResponse
{ _dprNextToken :: Maybe Text
, _dprScalingPolicies :: List "member" ScalingPolicy
} deriving (Eq, Read, Show)
describePoliciesResponse :: DescribePoliciesResponse
describePoliciesResponse = DescribePoliciesResponse
{ _dprScalingPolicies = mempty
, _dprNextToken = Nothing
}
dprNextToken :: Lens' DescribePoliciesResponse (Maybe Text)
dprNextToken = lens _dprNextToken (\s a -> s { _dprNextToken = a })
dprScalingPolicies :: Lens' DescribePoliciesResponse [ScalingPolicy]
dprScalingPolicies =
lens _dprScalingPolicies (\s a -> s { _dprScalingPolicies = a })
. _List
instance ToPath DescribePolicies where
toPath = const "/"
instance ToQuery DescribePolicies where
toQuery DescribePolicies{..} = mconcat
[ "AutoScalingGroupName" =? _dp1AutoScalingGroupName
, "MaxRecords" =? _dp1MaxRecords
, "NextToken" =? _dp1NextToken
, "PolicyNames" =? _dp1PolicyNames
]
instance ToHeaders DescribePolicies
instance AWSRequest DescribePolicies where
type Sv DescribePolicies = AutoScaling
type Rs DescribePolicies = DescribePoliciesResponse
request = post "DescribePolicies"
response = xmlResponse
instance FromXML DescribePoliciesResponse where
parseXML = withElement "DescribePoliciesResult" $ \x -> DescribePoliciesResponse
<$> x .@? "NextToken"
<*> x .@? "ScalingPolicies" .!@ mempty
instance AWSPager DescribePolicies where
page rq rs
| stop (rs ^. dprNextToken) = Nothing
| otherwise = (\x -> rq & dp1NextToken ?~ x)
<$> (rs ^. dprNextToken)