{-# 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.ElastiCache.DescribeCacheClusters
(
describeCacheClusters
, DescribeCacheClusters
, dCacheClusterId
, dMarker
, dMaxRecords
, dShowCacheNodeInfo
, describeCacheClustersResponse
, DescribeCacheClustersResponse
, drsCacheClusters
, drsMarker
, drsResponseStatus
) where
import Network.AWS.ElastiCache.Types
import Network.AWS.ElastiCache.Types.Product
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data DescribeCacheClusters = DescribeCacheClusters'
{ _dCacheClusterId :: !(Maybe Text)
, _dMarker :: !(Maybe Text)
, _dMaxRecords :: !(Maybe Int)
, _dShowCacheNodeInfo :: !(Maybe Bool)
} deriving (Eq,Read,Show,Data,Typeable,Generic)
describeCacheClusters
:: DescribeCacheClusters
describeCacheClusters =
DescribeCacheClusters'
{ _dCacheClusterId = Nothing
, _dMarker = Nothing
, _dMaxRecords = Nothing
, _dShowCacheNodeInfo = Nothing
}
dCacheClusterId :: Lens' DescribeCacheClusters (Maybe Text)
dCacheClusterId = lens _dCacheClusterId (\ s a -> s{_dCacheClusterId = a});
dMarker :: Lens' DescribeCacheClusters (Maybe Text)
dMarker = lens _dMarker (\ s a -> s{_dMarker = a});
dMaxRecords :: Lens' DescribeCacheClusters (Maybe Int)
dMaxRecords = lens _dMaxRecords (\ s a -> s{_dMaxRecords = a});
dShowCacheNodeInfo :: Lens' DescribeCacheClusters (Maybe Bool)
dShowCacheNodeInfo = lens _dShowCacheNodeInfo (\ s a -> s{_dShowCacheNodeInfo = a});
instance AWSPager DescribeCacheClusters where
page rq rs
| stop (rs ^. drsMarker) = Nothing
| stop (rs ^. drsCacheClusters) = Nothing
| otherwise = Just $ rq & dMarker .~ rs ^. drsMarker
instance AWSRequest DescribeCacheClusters where
type Rs DescribeCacheClusters =
DescribeCacheClustersResponse
request = postQuery elastiCache
response
= receiveXMLWrapper "DescribeCacheClustersResult"
(\ s h x ->
DescribeCacheClustersResponse' <$>
(x .@? "CacheClusters" .!@ mempty >>=
may (parseXMLList "CacheCluster"))
<*> (x .@? "Marker")
<*> (pure (fromEnum s)))
instance Hashable DescribeCacheClusters
instance NFData DescribeCacheClusters
instance ToHeaders DescribeCacheClusters where
toHeaders = const mempty
instance ToPath DescribeCacheClusters where
toPath = const "/"
instance ToQuery DescribeCacheClusters where
toQuery DescribeCacheClusters'{..}
= mconcat
["Action" =: ("DescribeCacheClusters" :: ByteString),
"Version" =: ("2015-02-02" :: ByteString),
"CacheClusterId" =: _dCacheClusterId,
"Marker" =: _dMarker, "MaxRecords" =: _dMaxRecords,
"ShowCacheNodeInfo" =: _dShowCacheNodeInfo]
data DescribeCacheClustersResponse = DescribeCacheClustersResponse'
{ _drsCacheClusters :: !(Maybe [CacheCluster])
, _drsMarker :: !(Maybe Text)
, _drsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
describeCacheClustersResponse
:: Int
-> DescribeCacheClustersResponse
describeCacheClustersResponse pResponseStatus_ =
DescribeCacheClustersResponse'
{ _drsCacheClusters = Nothing
, _drsMarker = Nothing
, _drsResponseStatus = pResponseStatus_
}
drsCacheClusters :: Lens' DescribeCacheClustersResponse [CacheCluster]
drsCacheClusters = lens _drsCacheClusters (\ s a -> s{_drsCacheClusters = a}) . _Default . _Coerce;
drsMarker :: Lens' DescribeCacheClustersResponse (Maybe Text)
drsMarker = lens _drsMarker (\ s a -> s{_drsMarker = a});
drsResponseStatus :: Lens' DescribeCacheClustersResponse Int
drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
instance NFData DescribeCacheClustersResponse