module Network.AWS.DirectoryService.EnableRadius
    (
    
      enableRadius
    , EnableRadius
    
    , erDirectoryId
    , erRadiusSettings
    
    , enableRadiusResponse
    , EnableRadiusResponse
    
    , errsResponseStatus
    ) where
import           Network.AWS.DirectoryService.Types
import           Network.AWS.DirectoryService.Types.Product
import           Network.AWS.Prelude
import           Network.AWS.Request
import           Network.AWS.Response
data EnableRadius = EnableRadius'
    { _erDirectoryId    :: !Text
    , _erRadiusSettings :: !RadiusSettings
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
enableRadius
    :: Text 
    -> RadiusSettings 
    -> EnableRadius
enableRadius pDirectoryId_ pRadiusSettings_ =
    EnableRadius'
    { _erDirectoryId = pDirectoryId_
    , _erRadiusSettings = pRadiusSettings_
    }
erDirectoryId :: Lens' EnableRadius Text
erDirectoryId = lens _erDirectoryId (\ s a -> s{_erDirectoryId = a});
erRadiusSettings :: Lens' EnableRadius RadiusSettings
erRadiusSettings = lens _erRadiusSettings (\ s a -> s{_erRadiusSettings = a});
instance AWSRequest EnableRadius where
        type Rs EnableRadius = EnableRadiusResponse
        request = postJSON directoryService
        response
          = receiveEmpty
              (\ s h x ->
                 EnableRadiusResponse' <$> (pure (fromEnum s)))
instance ToHeaders EnableRadius where
        toHeaders
          = const
              (mconcat
                 ["X-Amz-Target" =#
                    ("DirectoryService_20150416.EnableRadius" ::
                       ByteString),
                  "Content-Type" =#
                    ("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON EnableRadius where
        toJSON EnableRadius'{..}
          = object
              (catMaybes
                 [Just ("DirectoryId" .= _erDirectoryId),
                  Just ("RadiusSettings" .= _erRadiusSettings)])
instance ToPath EnableRadius where
        toPath = const "/"
instance ToQuery EnableRadius where
        toQuery = const mempty
newtype EnableRadiusResponse = EnableRadiusResponse'
    { _errsResponseStatus :: Int
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
enableRadiusResponse
    :: Int 
    -> EnableRadiusResponse
enableRadiusResponse pResponseStatus_ =
    EnableRadiusResponse'
    { _errsResponseStatus = pResponseStatus_
    }
errsResponseStatus :: Lens' EnableRadiusResponse Int
errsResponseStatus = lens _errsResponseStatus (\ s a -> s{_errsResponseStatus = a});