stratosphere-0.4.2: library-gen/Stratosphere/Resources/ConfigConfigRule.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html
module Stratosphere.Resources.ConfigConfigRule where
import Control.Lens hiding ((.=))
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Monoid (mempty)
import Data.Text
import Stratosphere.Values
import Stratosphere.ResourceProperties.ConfigConfigRuleScope
import Stratosphere.ResourceProperties.ConfigConfigRuleSource
-- | Full data type definition for ConfigConfigRule. See 'configConfigRule'
-- for a more convenient constructor.
data ConfigConfigRule =
ConfigConfigRule
{ _configConfigRuleConfigRuleName :: Maybe (Val Text)
, _configConfigRuleDescription :: Maybe (Val Text)
, _configConfigRuleInputParameters :: Maybe Object
, _configConfigRuleMaximumExecutionFrequency :: Maybe (Val Text)
, _configConfigRuleScope :: Maybe ConfigConfigRuleScope
, _configConfigRuleSource :: ConfigConfigRuleSource
} deriving (Show, Eq)
instance ToJSON ConfigConfigRule where
toJSON ConfigConfigRule{..} =
object $
catMaybes
[ ("ConfigRuleName" .=) <$> _configConfigRuleConfigRuleName
, ("Description" .=) <$> _configConfigRuleDescription
, ("InputParameters" .=) <$> _configConfigRuleInputParameters
, ("MaximumExecutionFrequency" .=) <$> _configConfigRuleMaximumExecutionFrequency
, ("Scope" .=) <$> _configConfigRuleScope
, Just ("Source" .= _configConfigRuleSource)
]
instance FromJSON ConfigConfigRule where
parseJSON (Object obj) =
ConfigConfigRule <$>
obj .:? "ConfigRuleName" <*>
obj .:? "Description" <*>
obj .:? "InputParameters" <*>
obj .:? "MaximumExecutionFrequency" <*>
obj .:? "Scope" <*>
obj .: "Source"
parseJSON _ = mempty
-- | Constructor for 'ConfigConfigRule' containing required fields as
-- arguments.
configConfigRule
:: ConfigConfigRuleSource -- ^ 'ccrSource'
-> ConfigConfigRule
configConfigRule sourcearg =
ConfigConfigRule
{ _configConfigRuleConfigRuleName = Nothing
, _configConfigRuleDescription = Nothing
, _configConfigRuleInputParameters = Nothing
, _configConfigRuleMaximumExecutionFrequency = Nothing
, _configConfigRuleScope = Nothing
, _configConfigRuleSource = sourcearg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-configrulename
ccrConfigRuleName :: Lens' ConfigConfigRule (Maybe (Val Text))
ccrConfigRuleName = lens _configConfigRuleConfigRuleName (\s a -> s { _configConfigRuleConfigRuleName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-description
ccrDescription :: Lens' ConfigConfigRule (Maybe (Val Text))
ccrDescription = lens _configConfigRuleDescription (\s a -> s { _configConfigRuleDescription = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-inputparameters
ccrInputParameters :: Lens' ConfigConfigRule (Maybe Object)
ccrInputParameters = lens _configConfigRuleInputParameters (\s a -> s { _configConfigRuleInputParameters = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-maximumexecutionfrequency
ccrMaximumExecutionFrequency :: Lens' ConfigConfigRule (Maybe (Val Text))
ccrMaximumExecutionFrequency = lens _configConfigRuleMaximumExecutionFrequency (\s a -> s { _configConfigRuleMaximumExecutionFrequency = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-scope
ccrScope :: Lens' ConfigConfigRule (Maybe ConfigConfigRuleScope)
ccrScope = lens _configConfigRuleScope (\s a -> s { _configConfigRuleScope = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-source
ccrSource :: Lens' ConfigConfigRule ConfigConfigRuleSource
ccrSource = lens _configConfigRuleSource (\s a -> s { _configConfigRuleSource = a })