module Network.AWS.CloudFormation.DescribeStacks
(
DescribeStacks
, describeStacks
, ds1NextToken
, ds1StackName
, DescribeStacksResponse
, describeStacksResponse
, dsrNextToken
, dsrStacks
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.CloudFormation.Types
import qualified GHC.Exts
data DescribeStacks = DescribeStacks
{ _ds1NextToken :: Maybe Text
, _ds1StackName :: Maybe Text
} deriving (Eq, Ord, Show)
describeStacks :: DescribeStacks
describeStacks = DescribeStacks
{ _ds1StackName = Nothing
, _ds1NextToken = Nothing
}
ds1NextToken :: Lens' DescribeStacks (Maybe Text)
ds1NextToken = lens _ds1NextToken (\s a -> s { _ds1NextToken = a })
ds1StackName :: Lens' DescribeStacks (Maybe Text)
ds1StackName = lens _ds1StackName (\s a -> s { _ds1StackName = a })
data DescribeStacksResponse = DescribeStacksResponse
{ _dsrNextToken :: Maybe Text
, _dsrStacks :: List "Stacks" Stack
} deriving (Eq, Show)
describeStacksResponse :: DescribeStacksResponse
describeStacksResponse = DescribeStacksResponse
{ _dsrStacks = mempty
, _dsrNextToken = Nothing
}
dsrNextToken :: Lens' DescribeStacksResponse (Maybe Text)
dsrNextToken = lens _dsrNextToken (\s a -> s { _dsrNextToken = a })
dsrStacks :: Lens' DescribeStacksResponse [Stack]
dsrStacks = lens _dsrStacks (\s a -> s { _dsrStacks = a }) . _List
instance ToPath DescribeStacks where
toPath = const "/"
instance ToQuery DescribeStacks where
toQuery DescribeStacks{..} = mconcat
[ "NextToken" =? _ds1NextToken
, "StackName" =? _ds1StackName
]
instance ToHeaders DescribeStacks
instance AWSRequest DescribeStacks where
type Sv DescribeStacks = CloudFormation
type Rs DescribeStacks = DescribeStacksResponse
request = post "DescribeStacks"
response = xmlResponse
instance FromXML DescribeStacksResponse where
parseXML = withElement "DescribeStacksResult" $ \x -> DescribeStacksResponse
<$> x .@? "NextToken"
<*> x .@ "Stacks"
instance AWSPager DescribeStacks where
page rq rs
| stop (rq ^. ds1NextToken) = Nothing
| otherwise = (\x -> rq & ds1NextToken ?~ x)
<$> (rs ^. dsrNextToken)