{-# 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.CreateReceiptFilter
    (
    
      createReceiptFilter
    , CreateReceiptFilter
    
    , crfFilter
    
    , createReceiptFilterResponse
    , CreateReceiptFilterResponse
    
    , crfrsResponseStatus
    ) 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 CreateReceiptFilter = CreateReceiptFilter'
    { _crfFilter :: ReceiptFilter
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
createReceiptFilter
    :: ReceiptFilter 
    -> CreateReceiptFilter
createReceiptFilter pFilter_ =
    CreateReceiptFilter'
    { _crfFilter = pFilter_
    }
crfFilter :: Lens' CreateReceiptFilter ReceiptFilter
crfFilter = lens _crfFilter (\ s a -> s{_crfFilter = a});
instance AWSRequest CreateReceiptFilter where
        type Rs CreateReceiptFilter =
             CreateReceiptFilterResponse
        request = postQuery ses
        response
          = receiveXMLWrapper "CreateReceiptFilterResult"
              (\ s h x ->
                 CreateReceiptFilterResponse' <$> (pure (fromEnum s)))
instance Hashable CreateReceiptFilter
instance NFData CreateReceiptFilter
instance ToHeaders CreateReceiptFilter where
        toHeaders = const mempty
instance ToPath CreateReceiptFilter where
        toPath = const "/"
instance ToQuery CreateReceiptFilter where
        toQuery CreateReceiptFilter'{..}
          = mconcat
              ["Action" =: ("CreateReceiptFilter" :: ByteString),
               "Version" =: ("2010-12-01" :: ByteString),
               "Filter" =: _crfFilter]
newtype CreateReceiptFilterResponse = CreateReceiptFilterResponse'
    { _crfrsResponseStatus :: Int
    } deriving (Eq,Read,Show,Data,Typeable,Generic)
createReceiptFilterResponse
    :: Int 
    -> CreateReceiptFilterResponse
createReceiptFilterResponse pResponseStatus_ =
    CreateReceiptFilterResponse'
    { _crfrsResponseStatus = pResponseStatus_
    }
crfrsResponseStatus :: Lens' CreateReceiptFilterResponse Int
crfrsResponseStatus = lens _crfrsResponseStatus (\ s a -> s{_crfrsResponseStatus = a});
instance NFData CreateReceiptFilterResponse