module Network.AWS.StorageGateway.UpdateVTLDeviceType
    (
    
      UpdateVTLDeviceType
    
    , updateVTLDeviceType
    
    , uvtldtDeviceType
    , uvtldtVTLDeviceARN
    
    , UpdateVTLDeviceTypeResponse
    
    , updateVTLDeviceTypeResponse
    
    , uvtldtrVTLDeviceARN
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.StorageGateway.Types
import qualified GHC.Exts
data UpdateVTLDeviceType = UpdateVTLDeviceType
    { _uvtldtDeviceType   :: Text
    , _uvtldtVTLDeviceARN :: Text
    } deriving (Eq, Ord, Read, Show)
updateVTLDeviceType :: Text 
                    -> Text 
                    -> UpdateVTLDeviceType
updateVTLDeviceType p1 p2 = UpdateVTLDeviceType
    { _uvtldtVTLDeviceARN = p1
    , _uvtldtDeviceType   = p2
    }
uvtldtDeviceType :: Lens' UpdateVTLDeviceType Text
uvtldtDeviceType = lens _uvtldtDeviceType (\s a -> s { _uvtldtDeviceType = a })
uvtldtVTLDeviceARN :: Lens' UpdateVTLDeviceType Text
uvtldtVTLDeviceARN =
    lens _uvtldtVTLDeviceARN (\s a -> s { _uvtldtVTLDeviceARN = a })
newtype UpdateVTLDeviceTypeResponse = UpdateVTLDeviceTypeResponse
    { _uvtldtrVTLDeviceARN :: Maybe Text
    } deriving (Eq, Ord, Read, Show, Monoid)
updateVTLDeviceTypeResponse :: UpdateVTLDeviceTypeResponse
updateVTLDeviceTypeResponse = UpdateVTLDeviceTypeResponse
    { _uvtldtrVTLDeviceARN = Nothing
    }
uvtldtrVTLDeviceARN :: Lens' UpdateVTLDeviceTypeResponse (Maybe Text)
uvtldtrVTLDeviceARN =
    lens _uvtldtrVTLDeviceARN (\s a -> s { _uvtldtrVTLDeviceARN = a })
instance ToPath UpdateVTLDeviceType where
    toPath = const "/"
instance ToQuery UpdateVTLDeviceType where
    toQuery = const mempty
instance ToHeaders UpdateVTLDeviceType
instance ToJSON UpdateVTLDeviceType where
    toJSON UpdateVTLDeviceType{..} = object
        [ "VTLDeviceARN" .= _uvtldtVTLDeviceARN
        , "DeviceType"   .= _uvtldtDeviceType
        ]
instance AWSRequest UpdateVTLDeviceType where
    type Sv UpdateVTLDeviceType = StorageGateway
    type Rs UpdateVTLDeviceType = UpdateVTLDeviceTypeResponse
    request  = post "UpdateVTLDeviceType"
    response = jsonResponse
instance FromJSON UpdateVTLDeviceTypeResponse where
    parseJSON = withObject "UpdateVTLDeviceTypeResponse" $ \o -> UpdateVTLDeviceTypeResponse
        <$> o .:? "VTLDeviceARN"