{-# 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.CloneReceiptRuleSet
    (
    
      cloneReceiptRuleSet
    , CloneReceiptRuleSet
    
    , cRuleSetName
    , cOriginalRuleSetName
    
    , cloneReceiptRuleSetResponse
    , CloneReceiptRuleSetResponse
    
    , crsResponseStatus
    ) 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 CloneReceiptRuleSet = CloneReceiptRuleSet'
    { _cRuleSetName         :: !Text
    , _cOriginalRuleSetName :: !Text
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
cloneReceiptRuleSet
    :: Text 
    -> Text 
    -> CloneReceiptRuleSet
cloneReceiptRuleSet pRuleSetName_ pOriginalRuleSetName_ =
    CloneReceiptRuleSet'
    { _cRuleSetName = pRuleSetName_
    , _cOriginalRuleSetName = pOriginalRuleSetName_
    }
cRuleSetName :: Lens' CloneReceiptRuleSet Text
cRuleSetName = lens _cRuleSetName (\ s a -> s{_cRuleSetName = a});
cOriginalRuleSetName :: Lens' CloneReceiptRuleSet Text
cOriginalRuleSetName = lens _cOriginalRuleSetName (\ s a -> s{_cOriginalRuleSetName = a});
instance AWSRequest CloneReceiptRuleSet where
        type Rs CloneReceiptRuleSet =
             CloneReceiptRuleSetResponse
        request = postQuery ses
        response
          = receiveXMLWrapper "CloneReceiptRuleSetResult"
              (\ s h x ->
                 CloneReceiptRuleSetResponse' <$> (pure (fromEnum s)))
instance Hashable CloneReceiptRuleSet
instance NFData CloneReceiptRuleSet
instance ToHeaders CloneReceiptRuleSet where
        toHeaders = const mempty
instance ToPath CloneReceiptRuleSet where
        toPath = const "/"
instance ToQuery CloneReceiptRuleSet where
        toQuery CloneReceiptRuleSet'{..}
          = mconcat
              ["Action" =: ("CloneReceiptRuleSet" :: ByteString),
               "Version" =: ("2010-12-01" :: ByteString),
               "RuleSetName" =: _cRuleSetName,
               "OriginalRuleSetName" =: _cOriginalRuleSetName]
newtype CloneReceiptRuleSetResponse = CloneReceiptRuleSetResponse'
    { _crsResponseStatus :: Int
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
cloneReceiptRuleSetResponse
    :: Int 
    -> CloneReceiptRuleSetResponse
cloneReceiptRuleSetResponse pResponseStatus_ =
    CloneReceiptRuleSetResponse'
    { _crsResponseStatus = pResponseStatus_
    }
crsResponseStatus :: Lens' CloneReceiptRuleSetResponse Int
crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
instance NFData CloneReceiptRuleSetResponse