{-# 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.CreateRoom
(
createRoom
, CreateRoom
, crProfileARN
, crProviderCalendarId
, crClientRequestToken
, crDescription
, crTags
, crRoomName
, createRoomResponse
, CreateRoomResponse
, crrsRoomARN
, crrsResponseStatus
) 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 CreateRoom = CreateRoom'
{ _crProfileARN :: !(Maybe Text)
, _crProviderCalendarId :: !(Maybe Text)
, _crClientRequestToken :: !(Maybe Text)
, _crDescription :: !(Maybe Text)
, _crTags :: !(Maybe [Tag])
, _crRoomName :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createRoom
:: Text
-> CreateRoom
createRoom pRoomName_ =
CreateRoom'
{ _crProfileARN = Nothing
, _crProviderCalendarId = Nothing
, _crClientRequestToken = Nothing
, _crDescription = Nothing
, _crTags = Nothing
, _crRoomName = pRoomName_
}
crProfileARN :: Lens' CreateRoom (Maybe Text)
crProfileARN = lens _crProfileARN (\ s a -> s{_crProfileARN = a})
crProviderCalendarId :: Lens' CreateRoom (Maybe Text)
crProviderCalendarId = lens _crProviderCalendarId (\ s a -> s{_crProviderCalendarId = a})
crClientRequestToken :: Lens' CreateRoom (Maybe Text)
crClientRequestToken = lens _crClientRequestToken (\ s a -> s{_crClientRequestToken = a})
crDescription :: Lens' CreateRoom (Maybe Text)
crDescription = lens _crDescription (\ s a -> s{_crDescription = a})
crTags :: Lens' CreateRoom [Tag]
crTags = lens _crTags (\ s a -> s{_crTags = a}) . _Default . _Coerce
crRoomName :: Lens' CreateRoom Text
crRoomName = lens _crRoomName (\ s a -> s{_crRoomName = a})
instance AWSRequest CreateRoom where
type Rs CreateRoom = CreateRoomResponse
request = postJSON alexaBusiness
response
= receiveJSON
(\ s h x ->
CreateRoomResponse' <$>
(x .?> "RoomArn") <*> (pure (fromEnum s)))
instance Hashable CreateRoom where
instance NFData CreateRoom where
instance ToHeaders CreateRoom where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AlexaForBusiness.CreateRoom" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateRoom where
toJSON CreateRoom'{..}
= object
(catMaybes
[("ProfileArn" .=) <$> _crProfileARN,
("ProviderCalendarId" .=) <$> _crProviderCalendarId,
("ClientRequestToken" .=) <$> _crClientRequestToken,
("Description" .=) <$> _crDescription,
("Tags" .=) <$> _crTags,
Just ("RoomName" .= _crRoomName)])
instance ToPath CreateRoom where
toPath = const "/"
instance ToQuery CreateRoom where
toQuery = const mempty
data CreateRoomResponse = CreateRoomResponse'
{ _crrsRoomARN :: !(Maybe Text)
, _crrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createRoomResponse
:: Int
-> CreateRoomResponse
createRoomResponse pResponseStatus_ =
CreateRoomResponse'
{_crrsRoomARN = Nothing, _crrsResponseStatus = pResponseStatus_}
crrsRoomARN :: Lens' CreateRoomResponse (Maybe Text)
crrsRoomARN = lens _crrsRoomARN (\ s a -> s{_crrsRoomARN = a})
crrsResponseStatus :: Lens' CreateRoomResponse Int
crrsResponseStatus = lens _crrsResponseStatus (\ s a -> s{_crrsResponseStatus = a})
instance NFData CreateRoomResponse where