{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.WorkMail.CreateUser
(
createUser
, CreateUser
, cuOrganizationId
, cuName
, cuDisplayName
, cuPassword
, createUserResponse
, CreateUserResponse
, cursUserId
, cursResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.WorkMail.Types
import Network.AWS.WorkMail.Types.Product
data CreateUser = CreateUser'
{ _cuOrganizationId :: !Text
, _cuName :: !Text
, _cuDisplayName :: !Text
, _cuPassword :: !(Sensitive Text)
} deriving (Eq, Show, Data, Typeable, Generic)
createUser
:: Text
-> Text
-> Text
-> Text
-> CreateUser
createUser pOrganizationId_ pName_ pDisplayName_ pPassword_ =
CreateUser'
{ _cuOrganizationId = pOrganizationId_
, _cuName = pName_
, _cuDisplayName = pDisplayName_
, _cuPassword = _Sensitive # pPassword_
}
cuOrganizationId :: Lens' CreateUser Text
cuOrganizationId = lens _cuOrganizationId (\ s a -> s{_cuOrganizationId = a})
cuName :: Lens' CreateUser Text
cuName = lens _cuName (\ s a -> s{_cuName = a})
cuDisplayName :: Lens' CreateUser Text
cuDisplayName = lens _cuDisplayName (\ s a -> s{_cuDisplayName = a})
cuPassword :: Lens' CreateUser Text
cuPassword = lens _cuPassword (\ s a -> s{_cuPassword = a}) . _Sensitive
instance AWSRequest CreateUser where
type Rs CreateUser = CreateUserResponse
request = postJSON workMail
response
= receiveJSON
(\ s h x ->
CreateUserResponse' <$>
(x .?> "UserId") <*> (pure (fromEnum s)))
instance Hashable CreateUser where
instance NFData CreateUser where
instance ToHeaders CreateUser where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("WorkMailService.CreateUser" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateUser where
toJSON CreateUser'{..}
= object
(catMaybes
[Just ("OrganizationId" .= _cuOrganizationId),
Just ("Name" .= _cuName),
Just ("DisplayName" .= _cuDisplayName),
Just ("Password" .= _cuPassword)])
instance ToPath CreateUser where
toPath = const "/"
instance ToQuery CreateUser where
toQuery = const mempty
data CreateUserResponse = CreateUserResponse'
{ _cursUserId :: !(Maybe Text)
, _cursResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createUserResponse
:: Int
-> CreateUserResponse
createUserResponse pResponseStatus_ =
CreateUserResponse'
{_cursUserId = Nothing, _cursResponseStatus = pResponseStatus_}
cursUserId :: Lens' CreateUserResponse (Maybe Text)
cursUserId = lens _cursUserId (\ s a -> s{_cursUserId = a})
cursResponseStatus :: Lens' CreateUserResponse Int
cursResponseStatus = lens _cursResponseStatus (\ s a -> s{_cursResponseStatus = a})
instance NFData CreateUserResponse where