{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html module Stratosphere.ResourceProperties.ConfigConfigRuleSourceDetail where import Control.Lens hiding ((.=)) import Data.Aeson import Data.Maybe (catMaybes) import Data.Monoid (mempty) import Data.Text import Stratosphere.Values -- | Full data type definition for ConfigConfigRuleSourceDetail. See -- 'configConfigRuleSourceDetail' for a more convenient constructor. data ConfigConfigRuleSourceDetail = ConfigConfigRuleSourceDetail { _configConfigRuleSourceDetailEventSource :: Val Text , _configConfigRuleSourceDetailMaximumExecutionFrequency :: Maybe (Val Text) , _configConfigRuleSourceDetailMessageType :: Val Text } deriving (Show, Eq) instance ToJSON ConfigConfigRuleSourceDetail where toJSON ConfigConfigRuleSourceDetail{..} = object $ catMaybes [ Just ("EventSource" .= _configConfigRuleSourceDetailEventSource) , ("MaximumExecutionFrequency" .=) <$> _configConfigRuleSourceDetailMaximumExecutionFrequency , Just ("MessageType" .= _configConfigRuleSourceDetailMessageType) ] instance FromJSON ConfigConfigRuleSourceDetail where parseJSON (Object obj) = ConfigConfigRuleSourceDetail <$> obj .: "EventSource" <*> obj .:? "MaximumExecutionFrequency" <*> obj .: "MessageType" parseJSON _ = mempty -- | Constructor for 'ConfigConfigRuleSourceDetail' containing required fields -- as arguments. configConfigRuleSourceDetail :: Val Text -- ^ 'ccrsdEventSource' -> Val Text -- ^ 'ccrsdMessageType' -> ConfigConfigRuleSourceDetail configConfigRuleSourceDetail eventSourcearg messageTypearg = ConfigConfigRuleSourceDetail { _configConfigRuleSourceDetailEventSource = eventSourcearg , _configConfigRuleSourceDetailMaximumExecutionFrequency = Nothing , _configConfigRuleSourceDetailMessageType = messageTypearg } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html#cfn-config-configrule-source-sourcedetail-eventsource ccrsdEventSource :: Lens' ConfigConfigRuleSourceDetail (Val Text) ccrsdEventSource = lens _configConfigRuleSourceDetailEventSource (\s a -> s { _configConfigRuleSourceDetailEventSource = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html#cfn-config-configrule-sourcedetail-maximumexecutionfrequency ccrsdMaximumExecutionFrequency :: Lens' ConfigConfigRuleSourceDetail (Maybe (Val Text)) ccrsdMaximumExecutionFrequency = lens _configConfigRuleSourceDetailMaximumExecutionFrequency (\s a -> s { _configConfigRuleSourceDetailMaximumExecutionFrequency = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html#cfn-config-configrule-source-sourcedetail-messagetype ccrsdMessageType :: Lens' ConfigConfigRuleSourceDetail (Val Text) ccrsdMessageType = lens _configConfigRuleSourceDetailMessageType (\s a -> s { _configConfigRuleSourceDetailMessageType = a })