module Network.AWS.ElastiCache.DescribeCacheEngineVersions
(
DescribeCacheEngineVersions
, describeCacheEngineVersions
, dcevCacheParameterGroupFamily
, dcevDefaultOnly
, dcevEngine
, dcevEngineVersion
, dcevMarker
, dcevMaxRecords
, DescribeCacheEngineVersionsResponse
, describeCacheEngineVersionsResponse
, dcevrCacheEngineVersions
, dcevrMarker
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.ElastiCache.Types
import qualified GHC.Exts
data DescribeCacheEngineVersions = DescribeCacheEngineVersions
{ _dcevCacheParameterGroupFamily :: Maybe Text
, _dcevDefaultOnly :: Maybe Bool
, _dcevEngine :: Maybe Text
, _dcevEngineVersion :: Maybe Text
, _dcevMarker :: Maybe Text
, _dcevMaxRecords :: Maybe Int
} deriving (Eq, Ord, Read, Show)
describeCacheEngineVersions :: DescribeCacheEngineVersions
describeCacheEngineVersions = DescribeCacheEngineVersions
{ _dcevEngine = Nothing
, _dcevEngineVersion = Nothing
, _dcevCacheParameterGroupFamily = Nothing
, _dcevMaxRecords = Nothing
, _dcevMarker = Nothing
, _dcevDefaultOnly = Nothing
}
dcevCacheParameterGroupFamily :: Lens' DescribeCacheEngineVersions (Maybe Text)
dcevCacheParameterGroupFamily =
lens _dcevCacheParameterGroupFamily
(\s a -> s { _dcevCacheParameterGroupFamily = a })
dcevDefaultOnly :: Lens' DescribeCacheEngineVersions (Maybe Bool)
dcevDefaultOnly = lens _dcevDefaultOnly (\s a -> s { _dcevDefaultOnly = a })
dcevEngine :: Lens' DescribeCacheEngineVersions (Maybe Text)
dcevEngine = lens _dcevEngine (\s a -> s { _dcevEngine = a })
dcevEngineVersion :: Lens' DescribeCacheEngineVersions (Maybe Text)
dcevEngineVersion =
lens _dcevEngineVersion (\s a -> s { _dcevEngineVersion = a })
dcevMarker :: Lens' DescribeCacheEngineVersions (Maybe Text)
dcevMarker = lens _dcevMarker (\s a -> s { _dcevMarker = a })
dcevMaxRecords :: Lens' DescribeCacheEngineVersions (Maybe Int)
dcevMaxRecords = lens _dcevMaxRecords (\s a -> s { _dcevMaxRecords = a })
data DescribeCacheEngineVersionsResponse = DescribeCacheEngineVersionsResponse
{ _dcevrCacheEngineVersions :: List "member" CacheEngineVersion
, _dcevrMarker :: Maybe Text
} deriving (Eq, Read, Show)
describeCacheEngineVersionsResponse :: DescribeCacheEngineVersionsResponse
describeCacheEngineVersionsResponse = DescribeCacheEngineVersionsResponse
{ _dcevrMarker = Nothing
, _dcevrCacheEngineVersions = mempty
}
dcevrCacheEngineVersions :: Lens' DescribeCacheEngineVersionsResponse [CacheEngineVersion]
dcevrCacheEngineVersions =
lens _dcevrCacheEngineVersions
(\s a -> s { _dcevrCacheEngineVersions = a })
. _List
dcevrMarker :: Lens' DescribeCacheEngineVersionsResponse (Maybe Text)
dcevrMarker = lens _dcevrMarker (\s a -> s { _dcevrMarker = a })
instance ToPath DescribeCacheEngineVersions where
toPath = const "/"
instance ToQuery DescribeCacheEngineVersions where
toQuery DescribeCacheEngineVersions{..} = mconcat
[ "CacheParameterGroupFamily" =? _dcevCacheParameterGroupFamily
, "DefaultOnly" =? _dcevDefaultOnly
, "Engine" =? _dcevEngine
, "EngineVersion" =? _dcevEngineVersion
, "Marker" =? _dcevMarker
, "MaxRecords" =? _dcevMaxRecords
]
instance ToHeaders DescribeCacheEngineVersions
instance AWSRequest DescribeCacheEngineVersions where
type Sv DescribeCacheEngineVersions = ElastiCache
type Rs DescribeCacheEngineVersions = DescribeCacheEngineVersionsResponse
request = post "DescribeCacheEngineVersions"
response = xmlResponse
instance FromXML DescribeCacheEngineVersionsResponse where
parseXML = withElement "DescribeCacheEngineVersionsResult" $ \x -> DescribeCacheEngineVersionsResponse
<$> x .@? "CacheEngineVersions" .!@ mempty
<*> x .@? "Marker"
instance AWSPager DescribeCacheEngineVersions where
page rq rs
| stop (rq ^. dcevMarker) = Nothing
| otherwise = (\x -> rq & dcevMarker ?~ x)
<$> (rs ^. dcevrMarker)