module Network.AWS.ElastiCache.CopySnapshot
(
CopySnapshot
, copySnapshot
, csSourceSnapshotName
, csTargetSnapshotName
, CopySnapshotResponse
, copySnapshotResponse
, csrSnapshot
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.ElastiCache.Types
import qualified GHC.Exts
data CopySnapshot = CopySnapshot
{ _csSourceSnapshotName :: Text
, _csTargetSnapshotName :: Text
} deriving (Eq, Ord, Show)
copySnapshot :: Text
-> Text
-> CopySnapshot
copySnapshot p1 p2 = CopySnapshot
{ _csSourceSnapshotName = p1
, _csTargetSnapshotName = p2
}
csSourceSnapshotName :: Lens' CopySnapshot Text
csSourceSnapshotName =
lens _csSourceSnapshotName (\s a -> s { _csSourceSnapshotName = a })
csTargetSnapshotName :: Lens' CopySnapshot Text
csTargetSnapshotName =
lens _csTargetSnapshotName (\s a -> s { _csTargetSnapshotName = a })
newtype CopySnapshotResponse = CopySnapshotResponse
{ _csrSnapshot :: Maybe Snapshot
} deriving (Eq, Show)
copySnapshotResponse :: CopySnapshotResponse
copySnapshotResponse = CopySnapshotResponse
{ _csrSnapshot = Nothing
}
csrSnapshot :: Lens' CopySnapshotResponse (Maybe Snapshot)
csrSnapshot = lens _csrSnapshot (\s a -> s { _csrSnapshot = a })
instance ToPath CopySnapshot where
toPath = const "/"
instance ToQuery CopySnapshot where
toQuery CopySnapshot{..} = mconcat
[ "SourceSnapshotName" =? _csSourceSnapshotName
, "TargetSnapshotName" =? _csTargetSnapshotName
]
instance ToHeaders CopySnapshot
instance AWSRequest CopySnapshot where
type Sv CopySnapshot = ElastiCache
type Rs CopySnapshot = CopySnapshotResponse
request = post "CopySnapshot"
response = xmlResponse
instance FromXML CopySnapshotResponse where
parseXML = withElement "CopySnapshotResult" $ \x -> CopySnapshotResponse
<$> x .@? "Snapshot"