{-# 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.AlexaBusiness.CreateUser
(
createUser
, CreateUser
, cuEmail
, cuLastName
, cuFirstName
, cuClientRequestToken
, cuTags
, cuUserId
, createUserResponse
, CreateUserResponse
, cursUserARN
, cursResponseStatus
) where
import Network.AWS.AlexaBusiness.Types
import Network.AWS.AlexaBusiness.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateUser = CreateUser'
{ _cuEmail :: !(Maybe Text)
, _cuLastName :: !(Maybe Text)
, _cuFirstName :: !(Maybe Text)
, _cuClientRequestToken :: !(Maybe Text)
, _cuTags :: !(Maybe [Tag])
, _cuUserId :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createUser
:: Text
-> CreateUser
createUser pUserId_ =
CreateUser'
{ _cuEmail = Nothing
, _cuLastName = Nothing
, _cuFirstName = Nothing
, _cuClientRequestToken = Nothing
, _cuTags = Nothing
, _cuUserId = pUserId_
}
cuEmail :: Lens' CreateUser (Maybe Text)
cuEmail = lens _cuEmail (\ s a -> s{_cuEmail = a})
cuLastName :: Lens' CreateUser (Maybe Text)
cuLastName = lens _cuLastName (\ s a -> s{_cuLastName = a})
cuFirstName :: Lens' CreateUser (Maybe Text)
cuFirstName = lens _cuFirstName (\ s a -> s{_cuFirstName = a})
cuClientRequestToken :: Lens' CreateUser (Maybe Text)
cuClientRequestToken = lens _cuClientRequestToken (\ s a -> s{_cuClientRequestToken = a})
cuTags :: Lens' CreateUser [Tag]
cuTags = lens _cuTags (\ s a -> s{_cuTags = a}) . _Default . _Coerce
cuUserId :: Lens' CreateUser Text
cuUserId = lens _cuUserId (\ s a -> s{_cuUserId = a})
instance AWSRequest CreateUser where
type Rs CreateUser = CreateUserResponse
request = postJSON alexaBusiness
response
= receiveJSON
(\ s h x ->
CreateUserResponse' <$>
(x .?> "UserArn") <*> (pure (fromEnum s)))
instance Hashable CreateUser where
instance NFData CreateUser where
instance ToHeaders CreateUser where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AlexaForBusiness.CreateUser" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateUser where
toJSON CreateUser'{..}
= object
(catMaybes
[("Email" .=) <$> _cuEmail,
("LastName" .=) <$> _cuLastName,
("FirstName" .=) <$> _cuFirstName,
("ClientRequestToken" .=) <$> _cuClientRequestToken,
("Tags" .=) <$> _cuTags,
Just ("UserId" .= _cuUserId)])
instance ToPath CreateUser where
toPath = const "/"
instance ToQuery CreateUser where
toQuery = const mempty
data CreateUserResponse = CreateUserResponse'
{ _cursUserARN :: !(Maybe Text)
, _cursResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createUserResponse
:: Int
-> CreateUserResponse
createUserResponse pResponseStatus_ =
CreateUserResponse'
{_cursUserARN = Nothing, _cursResponseStatus = pResponseStatus_}
cursUserARN :: Lens' CreateUserResponse (Maybe Text)
cursUserARN = lens _cursUserARN (\ s a -> s{_cursUserARN = a})
cursResponseStatus :: Lens' CreateUserResponse Int
cursResponseStatus = lens _cursResponseStatus (\ s a -> s{_cursResponseStatus = a})
instance NFData CreateUserResponse where