module Network.AWS.DirectoryService.CreateDirectory
(
createDirectory
, CreateDirectory
, cShortName
, cVPCSettings
, cDescription
, cName
, cPassword
, cSize
, createDirectoryResponse
, CreateDirectoryResponse
, crsDirectoryId
, crsResponseStatus
) where
import Network.AWS.DirectoryService.Types
import Network.AWS.DirectoryService.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateDirectory = CreateDirectory'
{ _cShortName :: !(Maybe Text)
, _cVPCSettings :: !(Maybe DirectoryVPCSettings)
, _cDescription :: !(Maybe Text)
, _cName :: !Text
, _cPassword :: !(Sensitive Text)
, _cSize :: !DirectorySize
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createDirectory
:: Text
-> Text
-> DirectorySize
-> CreateDirectory
createDirectory pName_ pPassword_ pSize_ =
CreateDirectory'
{ _cShortName = Nothing
, _cVPCSettings = Nothing
, _cDescription = Nothing
, _cName = pName_
, _cPassword = _Sensitive # pPassword_
, _cSize = pSize_
}
cShortName :: Lens' CreateDirectory (Maybe Text)
cShortName = lens _cShortName (\ s a -> s{_cShortName = a});
cVPCSettings :: Lens' CreateDirectory (Maybe DirectoryVPCSettings)
cVPCSettings = lens _cVPCSettings (\ s a -> s{_cVPCSettings = a});
cDescription :: Lens' CreateDirectory (Maybe Text)
cDescription = lens _cDescription (\ s a -> s{_cDescription = a});
cName :: Lens' CreateDirectory Text
cName = lens _cName (\ s a -> s{_cName = a});
cPassword :: Lens' CreateDirectory Text
cPassword = lens _cPassword (\ s a -> s{_cPassword = a}) . _Sensitive;
cSize :: Lens' CreateDirectory DirectorySize
cSize = lens _cSize (\ s a -> s{_cSize = a});
instance AWSRequest CreateDirectory where
type Rs CreateDirectory = CreateDirectoryResponse
request = postJSON directoryService
response
= receiveJSON
(\ s h x ->
CreateDirectoryResponse' <$>
(x .?> "DirectoryId") <*> (pure (fromEnum s)))
instance Hashable CreateDirectory
instance NFData CreateDirectory
instance ToHeaders CreateDirectory where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("DirectoryService_20150416.CreateDirectory" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateDirectory where
toJSON CreateDirectory'{..}
= object
(catMaybes
[("ShortName" .=) <$> _cShortName,
("VpcSettings" .=) <$> _cVPCSettings,
("Description" .=) <$> _cDescription,
Just ("Name" .= _cName),
Just ("Password" .= _cPassword),
Just ("Size" .= _cSize)])
instance ToPath CreateDirectory where
toPath = const "/"
instance ToQuery CreateDirectory where
toQuery = const mempty
data CreateDirectoryResponse = CreateDirectoryResponse'
{ _crsDirectoryId :: !(Maybe Text)
, _crsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createDirectoryResponse
:: Int
-> CreateDirectoryResponse
createDirectoryResponse pResponseStatus_ =
CreateDirectoryResponse'
{ _crsDirectoryId = Nothing
, _crsResponseStatus = pResponseStatus_
}
crsDirectoryId :: Lens' CreateDirectoryResponse (Maybe Text)
crsDirectoryId = lens _crsDirectoryId (\ s a -> s{_crsDirectoryId = a});
crsResponseStatus :: Lens' CreateDirectoryResponse Int
crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
instance NFData CreateDirectoryResponse