module Network.AWS.StorageGateway.DeleteBandwidthRateLimit
    (
    
      DeleteBandwidthRateLimit
    
    , deleteBandwidthRateLimit
    
    , dbrl1BandwidthType
    , dbrl1GatewayARN
    
    , DeleteBandwidthRateLimitResponse
    
    , deleteBandwidthRateLimitResponse
    
    , dbrlr1GatewayARN
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.StorageGateway.Types
import qualified GHC.Exts
data DeleteBandwidthRateLimit = DeleteBandwidthRateLimit
    { _dbrl1BandwidthType :: Text
    , _dbrl1GatewayARN    :: Text
    } deriving (Eq, Ord, Read, Show)
deleteBandwidthRateLimit :: Text 
                         -> Text 
                         -> DeleteBandwidthRateLimit
deleteBandwidthRateLimit p1 p2 = DeleteBandwidthRateLimit
    { _dbrl1GatewayARN    = p1
    , _dbrl1BandwidthType = p2
    }
dbrl1BandwidthType :: Lens' DeleteBandwidthRateLimit Text
dbrl1BandwidthType =
    lens _dbrl1BandwidthType (\s a -> s { _dbrl1BandwidthType = a })
dbrl1GatewayARN :: Lens' DeleteBandwidthRateLimit Text
dbrl1GatewayARN = lens _dbrl1GatewayARN (\s a -> s { _dbrl1GatewayARN = a })
newtype DeleteBandwidthRateLimitResponse = DeleteBandwidthRateLimitResponse
    { _dbrlr1GatewayARN :: Maybe Text
    } deriving (Eq, Ord, Read, Show, Monoid)
deleteBandwidthRateLimitResponse :: DeleteBandwidthRateLimitResponse
deleteBandwidthRateLimitResponse = DeleteBandwidthRateLimitResponse
    { _dbrlr1GatewayARN = Nothing
    }
dbrlr1GatewayARN :: Lens' DeleteBandwidthRateLimitResponse (Maybe Text)
dbrlr1GatewayARN = lens _dbrlr1GatewayARN (\s a -> s { _dbrlr1GatewayARN = a })
instance ToPath DeleteBandwidthRateLimit where
    toPath = const "/"
instance ToQuery DeleteBandwidthRateLimit where
    toQuery = const mempty
instance ToHeaders DeleteBandwidthRateLimit
instance ToJSON DeleteBandwidthRateLimit where
    toJSON DeleteBandwidthRateLimit{..} = object
        [ "GatewayARN"    .= _dbrl1GatewayARN
        , "BandwidthType" .= _dbrl1BandwidthType
        ]
instance AWSRequest DeleteBandwidthRateLimit where
    type Sv DeleteBandwidthRateLimit = StorageGateway
    type Rs DeleteBandwidthRateLimit = DeleteBandwidthRateLimitResponse
    request  = post "DeleteBandwidthRateLimit"
    response = jsonResponse
instance FromJSON DeleteBandwidthRateLimitResponse where
    parseJSON = withObject "DeleteBandwidthRateLimitResponse" $ \o -> DeleteBandwidthRateLimitResponse
        <$> o .:? "GatewayARN"