{-# 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.SES.SetIdentityHeadersInNotificationsEnabled
    (
    
      setIdentityHeadersInNotificationsEnabled
    , SetIdentityHeadersInNotificationsEnabled
    
    , sihineIdentity
    , sihineNotificationType
    , sihineEnabled
    
    , setIdentityHeadersInNotificationsEnabledResponse
    , SetIdentityHeadersInNotificationsEnabledResponse
    
    , sihinersResponseStatus
    ) where
import           Network.AWS.Lens
import           Network.AWS.Prelude
import           Network.AWS.Request
import           Network.AWS.Response
import           Network.AWS.SES.Types
import           Network.AWS.SES.Types.Product
data SetIdentityHeadersInNotificationsEnabled = SetIdentityHeadersInNotificationsEnabled'
    { _sihineIdentity         :: !Text
    , _sihineNotificationType :: !NotificationType
    , _sihineEnabled          :: !Bool
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
setIdentityHeadersInNotificationsEnabled
    :: Text 
    -> NotificationType 
    -> Bool 
    -> SetIdentityHeadersInNotificationsEnabled
setIdentityHeadersInNotificationsEnabled pIdentity_ pNotificationType_ pEnabled_ =
    SetIdentityHeadersInNotificationsEnabled'
    { _sihineIdentity = pIdentity_
    , _sihineNotificationType = pNotificationType_
    , _sihineEnabled = pEnabled_
    }
sihineIdentity :: Lens' SetIdentityHeadersInNotificationsEnabled Text
sihineIdentity = lens _sihineIdentity (\ s a -> s{_sihineIdentity = a});
sihineNotificationType :: Lens' SetIdentityHeadersInNotificationsEnabled NotificationType
sihineNotificationType = lens _sihineNotificationType (\ s a -> s{_sihineNotificationType = a});
sihineEnabled :: Lens' SetIdentityHeadersInNotificationsEnabled Bool
sihineEnabled = lens _sihineEnabled (\ s a -> s{_sihineEnabled = a});
instance AWSRequest
         SetIdentityHeadersInNotificationsEnabled where
        type Rs SetIdentityHeadersInNotificationsEnabled =
             SetIdentityHeadersInNotificationsEnabledResponse
        request = postQuery ses
        response
          = receiveXMLWrapper
              "SetIdentityHeadersInNotificationsEnabledResult"
              (\ s h x ->
                 SetIdentityHeadersInNotificationsEnabledResponse' <$>
                   (pure (fromEnum s)))
instance Hashable
         SetIdentityHeadersInNotificationsEnabled
instance NFData
         SetIdentityHeadersInNotificationsEnabled
instance ToHeaders
         SetIdentityHeadersInNotificationsEnabled where
        toHeaders = const mempty
instance ToPath
         SetIdentityHeadersInNotificationsEnabled where
        toPath = const "/"
instance ToQuery
         SetIdentityHeadersInNotificationsEnabled where
        toQuery SetIdentityHeadersInNotificationsEnabled'{..}
          = mconcat
              ["Action" =:
                 ("SetIdentityHeadersInNotificationsEnabled" ::
                    ByteString),
               "Version" =: ("2010-12-01" :: ByteString),
               "Identity" =: _sihineIdentity,
               "NotificationType" =: _sihineNotificationType,
               "Enabled" =: _sihineEnabled]
newtype SetIdentityHeadersInNotificationsEnabledResponse = SetIdentityHeadersInNotificationsEnabledResponse'
    { _sihinersResponseStatus :: Int
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
setIdentityHeadersInNotificationsEnabledResponse
    :: Int 
    -> SetIdentityHeadersInNotificationsEnabledResponse
setIdentityHeadersInNotificationsEnabledResponse pResponseStatus_ =
    SetIdentityHeadersInNotificationsEnabledResponse'
    { _sihinersResponseStatus = pResponseStatus_
    }
sihinersResponseStatus :: Lens' SetIdentityHeadersInNotificationsEnabledResponse Int
sihinersResponseStatus = lens _sihinersResponseStatus (\ s a -> s{_sihinersResponseStatus = a});
instance NFData
         SetIdentityHeadersInNotificationsEnabledResponse