module Network.AWS.StorageGateway.DeleteBandwidthRateLimit
    (
    
      deleteBandwidthRateLimit
    , DeleteBandwidthRateLimit
    
    , delGatewayARN
    , delBandwidthType
    
    , deleteBandwidthRateLimitResponse
    , DeleteBandwidthRateLimitResponse
    
    , delrsGatewayARN
    , delrsStatus
    ) where
import           Network.AWS.Prelude
import           Network.AWS.Request
import           Network.AWS.Response
import           Network.AWS.StorageGateway.Types
import           Network.AWS.StorageGateway.Types.Product
data DeleteBandwidthRateLimit = DeleteBandwidthRateLimit'
    { _delGatewayARN    :: !Text
    , _delBandwidthType :: !Text
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
deleteBandwidthRateLimit
    :: Text 
    -> Text 
    -> DeleteBandwidthRateLimit
deleteBandwidthRateLimit pGatewayARN_ pBandwidthType_ =
    DeleteBandwidthRateLimit'
    { _delGatewayARN = pGatewayARN_
    , _delBandwidthType = pBandwidthType_
    }
delGatewayARN :: Lens' DeleteBandwidthRateLimit Text
delGatewayARN = lens _delGatewayARN (\ s a -> s{_delGatewayARN = a});
delBandwidthType :: Lens' DeleteBandwidthRateLimit Text
delBandwidthType = lens _delBandwidthType (\ s a -> s{_delBandwidthType = a});
instance AWSRequest DeleteBandwidthRateLimit where
        type Rs DeleteBandwidthRateLimit =
             DeleteBandwidthRateLimitResponse
        request = postJSON storageGateway
        response
          = receiveJSON
              (\ s h x ->
                 DeleteBandwidthRateLimitResponse' <$>
                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
instance ToHeaders DeleteBandwidthRateLimit where
        toHeaders
          = const
              (mconcat
                 ["X-Amz-Target" =#
                    ("StorageGateway_20130630.DeleteBandwidthRateLimit"
                       :: ByteString),
                  "Content-Type" =#
                    ("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON DeleteBandwidthRateLimit where
        toJSON DeleteBandwidthRateLimit'{..}
          = object
              (catMaybes
                 [Just ("GatewayARN" .= _delGatewayARN),
                  Just ("BandwidthType" .= _delBandwidthType)])
instance ToPath DeleteBandwidthRateLimit where
        toPath = const "/"
instance ToQuery DeleteBandwidthRateLimit where
        toQuery = const mempty
data DeleteBandwidthRateLimitResponse = DeleteBandwidthRateLimitResponse'
    { _delrsGatewayARN :: !(Maybe Text)
    , _delrsStatus     :: !Int
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
deleteBandwidthRateLimitResponse
    :: Int 
    -> DeleteBandwidthRateLimitResponse
deleteBandwidthRateLimitResponse pStatus_ =
    DeleteBandwidthRateLimitResponse'
    { _delrsGatewayARN = Nothing
    , _delrsStatus = pStatus_
    }
delrsGatewayARN :: Lens' DeleteBandwidthRateLimitResponse (Maybe Text)
delrsGatewayARN = lens _delrsGatewayARN (\ s a -> s{_delrsGatewayARN = a});
delrsStatus :: Lens' DeleteBandwidthRateLimitResponse Int
delrsStatus = lens _delrsStatus (\ s a -> s{_delrsStatus = a});