module Network.AWS.StorageGateway.DescribeVTLDevices
(
DescribeVTLDevices
, describeVTLDevices
, dvtldGatewayARN
, dvtldLimit
, dvtldMarker
, dvtldVTLDeviceARNs
, DescribeVTLDevicesResponse
, describeVTLDevicesResponse
, dvtldrGatewayARN
, dvtldrMarker
, dvtldrVTLDevices
) where
import Network.AWS.Data (Object)
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.StorageGateway.Types
import qualified GHC.Exts
data DescribeVTLDevices = DescribeVTLDevices
{ _dvtldGatewayARN :: Text
, _dvtldLimit :: Maybe Nat
, _dvtldMarker :: Maybe Text
, _dvtldVTLDeviceARNs :: List "VTLDeviceARNs" Text
} deriving (Eq, Ord, Read, Show)
describeVTLDevices :: Text
-> DescribeVTLDevices
describeVTLDevices p1 = DescribeVTLDevices
{ _dvtldGatewayARN = p1
, _dvtldVTLDeviceARNs = mempty
, _dvtldMarker = Nothing
, _dvtldLimit = Nothing
}
dvtldGatewayARN :: Lens' DescribeVTLDevices Text
dvtldGatewayARN = lens _dvtldGatewayARN (\s a -> s { _dvtldGatewayARN = a })
dvtldLimit :: Lens' DescribeVTLDevices (Maybe Natural)
dvtldLimit = lens _dvtldLimit (\s a -> s { _dvtldLimit = a }) . mapping _Nat
dvtldMarker :: Lens' DescribeVTLDevices (Maybe Text)
dvtldMarker = lens _dvtldMarker (\s a -> s { _dvtldMarker = a })
dvtldVTLDeviceARNs :: Lens' DescribeVTLDevices [Text]
dvtldVTLDeviceARNs =
lens _dvtldVTLDeviceARNs (\s a -> s { _dvtldVTLDeviceARNs = a })
. _List
data DescribeVTLDevicesResponse = DescribeVTLDevicesResponse
{ _dvtldrGatewayARN :: Maybe Text
, _dvtldrMarker :: Maybe Text
, _dvtldrVTLDevices :: List "VTLDevices" VTLDevice
} deriving (Eq, Read, Show)
describeVTLDevicesResponse :: DescribeVTLDevicesResponse
describeVTLDevicesResponse = DescribeVTLDevicesResponse
{ _dvtldrGatewayARN = Nothing
, _dvtldrVTLDevices = mempty
, _dvtldrMarker = Nothing
}
dvtldrGatewayARN :: Lens' DescribeVTLDevicesResponse (Maybe Text)
dvtldrGatewayARN = lens _dvtldrGatewayARN (\s a -> s { _dvtldrGatewayARN = a })
dvtldrMarker :: Lens' DescribeVTLDevicesResponse (Maybe Text)
dvtldrMarker = lens _dvtldrMarker (\s a -> s { _dvtldrMarker = a })
dvtldrVTLDevices :: Lens' DescribeVTLDevicesResponse [VTLDevice]
dvtldrVTLDevices = lens _dvtldrVTLDevices (\s a -> s { _dvtldrVTLDevices = a }) . _List
instance ToPath DescribeVTLDevices where
toPath = const "/"
instance ToQuery DescribeVTLDevices where
toQuery = const mempty
instance ToHeaders DescribeVTLDevices
instance ToJSON DescribeVTLDevices where
toJSON DescribeVTLDevices{..} = object
[ "GatewayARN" .= _dvtldGatewayARN
, "VTLDeviceARNs" .= _dvtldVTLDeviceARNs
, "Marker" .= _dvtldMarker
, "Limit" .= _dvtldLimit
]
instance AWSRequest DescribeVTLDevices where
type Sv DescribeVTLDevices = StorageGateway
type Rs DescribeVTLDevices = DescribeVTLDevicesResponse
request = post "DescribeVTLDevices"
response = jsonResponse
instance FromJSON DescribeVTLDevicesResponse where
parseJSON = withObject "DescribeVTLDevicesResponse" $ \o -> DescribeVTLDevicesResponse
<$> o .:? "GatewayARN"
<*> o .:? "Marker"
<*> o .:? "VTLDevices" .!= mempty
instance AWSPager DescribeVTLDevices where
page rq rs
| stop (rs ^. dvtldrMarker) = Nothing
| otherwise = (\x -> rq & dvtldMarker ?~ x)
<$> (rs ^. dvtldrMarker)