amazonka-ds-1.4.3: gen/Network/AWS/DirectoryService/RegisterEventTopic.hs
{-# 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 #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.DirectoryService.RegisterEventTopic
-- Copyright : (c) 2013-2016 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Associates a directory with an SNS topic. This establishes the directory as a publisher to the specified SNS topic. You can then receive email or text (SMS) messages when the status of your directory changes. You get notified if your directory goes from an Active status to an Impaired or Inoperable status. You also receive a notification when the directory returns to an Active status.
module Network.AWS.DirectoryService.RegisterEventTopic
(
-- * Creating a Request
registerEventTopic
, RegisterEventTopic
-- * Request Lenses
, retDirectoryId
, retTopicName
-- * Destructuring the Response
, registerEventTopicResponse
, RegisterEventTopicResponse
-- * Response Lenses
, retrsResponseStatus
) 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
-- | /See:/ 'registerEventTopic' smart constructor.
data RegisterEventTopic = RegisterEventTopic'
{ _retDirectoryId :: !Text
, _retTopicName :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'RegisterEventTopic' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'retDirectoryId'
--
-- * 'retTopicName'
registerEventTopic
:: Text -- ^ 'retDirectoryId'
-> Text -- ^ 'retTopicName'
-> RegisterEventTopic
registerEventTopic pDirectoryId_ pTopicName_ =
RegisterEventTopic'
{ _retDirectoryId = pDirectoryId_
, _retTopicName = pTopicName_
}
-- | The Directory ID that will publish status messages to the SNS topic.
retDirectoryId :: Lens' RegisterEventTopic Text
retDirectoryId = lens _retDirectoryId (\ s a -> s{_retDirectoryId = a});
-- | The SNS topic name to which the directory will publish status messages. This SNS topic must be in the same region as the specified Directory ID.
retTopicName :: Lens' RegisterEventTopic Text
retTopicName = lens _retTopicName (\ s a -> s{_retTopicName = a});
instance AWSRequest RegisterEventTopic where
type Rs RegisterEventTopic =
RegisterEventTopicResponse
request = postJSON directoryService
response
= receiveEmpty
(\ s h x ->
RegisterEventTopicResponse' <$> (pure (fromEnum s)))
instance Hashable RegisterEventTopic
instance NFData RegisterEventTopic
instance ToHeaders RegisterEventTopic where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("DirectoryService_20150416.RegisterEventTopic" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON RegisterEventTopic where
toJSON RegisterEventTopic'{..}
= object
(catMaybes
[Just ("DirectoryId" .= _retDirectoryId),
Just ("TopicName" .= _retTopicName)])
instance ToPath RegisterEventTopic where
toPath = const "/"
instance ToQuery RegisterEventTopic where
toQuery = const mempty
-- | /See:/ 'registerEventTopicResponse' smart constructor.
newtype RegisterEventTopicResponse = RegisterEventTopicResponse'
{ _retrsResponseStatus :: Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'RegisterEventTopicResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'retrsResponseStatus'
registerEventTopicResponse
:: Int -- ^ 'retrsResponseStatus'
-> RegisterEventTopicResponse
registerEventTopicResponse pResponseStatus_ =
RegisterEventTopicResponse'
{ _retrsResponseStatus = pResponseStatus_
}
-- | The response status code.
retrsResponseStatus :: Lens' RegisterEventTopicResponse Int
retrsResponseStatus = lens _retrsResponseStatus (\ s a -> s{_retrsResponseStatus = a});
instance NFData RegisterEventTopicResponse