{-# 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.DescribeReceiptRuleSet
    (
    
      describeReceiptRuleSet
    , DescribeReceiptRuleSet
    
    , drrsRuleSetName
    
    , describeReceiptRuleSetResponse
    , DescribeReceiptRuleSetResponse
    
    , desrsRules
    , desrsMetadata
    , desrsResponseStatus
    ) 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
newtype DescribeReceiptRuleSet = DescribeReceiptRuleSet'
    { _drrsRuleSetName :: Text
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
describeReceiptRuleSet
    :: Text 
    -> DescribeReceiptRuleSet
describeReceiptRuleSet pRuleSetName_ =
    DescribeReceiptRuleSet'
    { _drrsRuleSetName = pRuleSetName_
    }
drrsRuleSetName :: Lens' DescribeReceiptRuleSet Text
drrsRuleSetName = lens _drrsRuleSetName (\ s a -> s{_drrsRuleSetName = a});
instance AWSRequest DescribeReceiptRuleSet where
        type Rs DescribeReceiptRuleSet =
             DescribeReceiptRuleSetResponse
        request = postQuery ses
        response
          = receiveXMLWrapper "DescribeReceiptRuleSetResult"
              (\ s h x ->
                 DescribeReceiptRuleSetResponse' <$>
                   (x .@? "Rules" .!@ mempty >>=
                      may (parseXMLList "member"))
                     <*> (x .@? "Metadata")
                     <*> (pure (fromEnum s)))
instance Hashable DescribeReceiptRuleSet
instance NFData DescribeReceiptRuleSet
instance ToHeaders DescribeReceiptRuleSet where
        toHeaders = const mempty
instance ToPath DescribeReceiptRuleSet where
        toPath = const "/"
instance ToQuery DescribeReceiptRuleSet where
        toQuery DescribeReceiptRuleSet'{..}
          = mconcat
              ["Action" =:
                 ("DescribeReceiptRuleSet" :: ByteString),
               "Version" =: ("2010-12-01" :: ByteString),
               "RuleSetName" =: _drrsRuleSetName]
data DescribeReceiptRuleSetResponse = DescribeReceiptRuleSetResponse'
    { _desrsRules          :: !(Maybe [ReceiptRule])
    , _desrsMetadata       :: !(Maybe ReceiptRuleSetMetadata)
    , _desrsResponseStatus :: !Int
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
describeReceiptRuleSetResponse
    :: Int 
    -> DescribeReceiptRuleSetResponse
describeReceiptRuleSetResponse pResponseStatus_ =
    DescribeReceiptRuleSetResponse'
    { _desrsRules = Nothing
    , _desrsMetadata = Nothing
    , _desrsResponseStatus = pResponseStatus_
    }
desrsRules :: Lens' DescribeReceiptRuleSetResponse [ReceiptRule]
desrsRules = lens _desrsRules (\ s a -> s{_desrsRules = a}) . _Default . _Coerce;
desrsMetadata :: Lens' DescribeReceiptRuleSetResponse (Maybe ReceiptRuleSetMetadata)
desrsMetadata = lens _desrsMetadata (\ s a -> s{_desrsMetadata = a});
desrsResponseStatus :: Lens' DescribeReceiptRuleSetResponse Int
desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
instance NFData DescribeReceiptRuleSetResponse