amazonka-elasticache-0.0.7: gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- Module : Network.AWS.ElastiCache.DescribeCacheEngineVersions
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- License : This Source Code Form is subject to the terms of
-- the Mozilla Public License, v. 2.0.
-- A copy of the MPL can be found in the LICENSE file or
-- you can obtain it at http://mozilla.org/MPL/2.0/.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
--
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- | The /DescribeCacheEngineVersions/ operation returns a list of the available
-- cache engines and their versions.
--
-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheEngineVersions.html>
module Network.AWS.ElastiCache.DescribeCacheEngineVersions
(
-- * Request
DescribeCacheEngineVersions
-- ** Request constructor
, describeCacheEngineVersions
-- ** Request lenses
, dcevCacheParameterGroupFamily
, dcevDefaultOnly
, dcevEngine
, dcevEngineVersion
, dcevMarker
, dcevMaxRecords
-- * Response
, DescribeCacheEngineVersionsResponse
-- ** Response constructor
, describeCacheEngineVersionsResponse
-- ** Response lenses
, 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, Show)
-- | 'DescribeCacheEngineVersions' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'dcevCacheParameterGroupFamily' @::@ 'Maybe' 'Text'
--
-- * 'dcevDefaultOnly' @::@ 'Maybe' 'Bool'
--
-- * 'dcevEngine' @::@ 'Maybe' 'Text'
--
-- * 'dcevEngineVersion' @::@ 'Maybe' 'Text'
--
-- * 'dcevMarker' @::@ 'Maybe' 'Text'
--
-- * 'dcevMaxRecords' @::@ 'Maybe' 'Int'
--
describeCacheEngineVersions :: DescribeCacheEngineVersions
describeCacheEngineVersions = DescribeCacheEngineVersions
{ _dcevEngine = Nothing
, _dcevEngineVersion = Nothing
, _dcevCacheParameterGroupFamily = Nothing
, _dcevMaxRecords = Nothing
, _dcevMarker = Nothing
, _dcevDefaultOnly = Nothing
}
-- | The name of a specific cache parameter group family to return details for.
--
-- Constraints:
--
-- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
--
dcevCacheParameterGroupFamily :: Lens' DescribeCacheEngineVersions (Maybe Text)
dcevCacheParameterGroupFamily =
lens _dcevCacheParameterGroupFamily
(\s a -> s { _dcevCacheParameterGroupFamily = a })
-- | If /true/, specifies that only the default version of the specified engine or
-- engine and major version combination is to be returned.
dcevDefaultOnly :: Lens' DescribeCacheEngineVersions (Maybe Bool)
dcevDefaultOnly = lens _dcevDefaultOnly (\s a -> s { _dcevDefaultOnly = a })
-- | The cache engine to return. Valid values: 'memcached' | 'redis'
dcevEngine :: Lens' DescribeCacheEngineVersions (Maybe Text)
dcevEngine = lens _dcevEngine (\s a -> s { _dcevEngine = a })
-- | The cache engine version to return.
--
-- Example: '1.4.14'
dcevEngineVersion :: Lens' DescribeCacheEngineVersions (Maybe Text)
dcevEngineVersion =
lens _dcevEngineVersion (\s a -> s { _dcevEngineVersion = a })
-- | An optional marker returned from a prior request. Use this marker for
-- pagination of results from this operation. If this parameter is specified,
-- the response includes only records beyond the marker, up to the value
-- specified by /MaxRecords/.
dcevMarker :: Lens' DescribeCacheEngineVersions (Maybe Text)
dcevMarker = lens _dcevMarker (\s a -> s { _dcevMarker = a })
-- | The maximum number of records to include in the response. If more records
-- exist than the specified 'MaxRecords' value, a marker is included in the
-- response so that the remaining results can be retrieved.
--
-- Default: 100
--
-- Constraints: minimum 20; maximum 100.
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, Show)
-- | 'DescribeCacheEngineVersionsResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'dcevrCacheEngineVersions' @::@ ['CacheEngineVersion']
--
-- * 'dcevrMarker' @::@ 'Maybe' 'Text'
--
describeCacheEngineVersionsResponse :: DescribeCacheEngineVersionsResponse
describeCacheEngineVersionsResponse = DescribeCacheEngineVersionsResponse
{ _dcevrMarker = Nothing
, _dcevrCacheEngineVersions = mempty
}
-- | A list of cache engine version details. Each element in the list contains
-- detailed information about one cache engine version.
dcevrCacheEngineVersions :: Lens' DescribeCacheEngineVersionsResponse [CacheEngineVersion]
dcevrCacheEngineVersions =
lens _dcevrCacheEngineVersions
(\s a -> s { _dcevrCacheEngineVersions = a })
. _List
-- | Provides an identifier to allow retrieval of paginated results.
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)