packages feed

stratosphere-0.50.0: library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRuleAction.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html

module Stratosphere.ResourceProperties.WAFv2RuleGroupRuleAction where

import Stratosphere.ResourceImports


-- | Full data type definition for WAFv2RuleGroupRuleAction. See
-- 'waFv2RuleGroupRuleAction' for a more convenient constructor.
data WAFv2RuleGroupRuleAction =
  WAFv2RuleGroupRuleAction
  { _wAFv2RuleGroupRuleActionAllow :: Maybe Object
  , _wAFv2RuleGroupRuleActionBlock :: Maybe Object
  , _wAFv2RuleGroupRuleActionCount :: Maybe Object
  } deriving (Show, Eq)

instance ToJSON WAFv2RuleGroupRuleAction where
  toJSON WAFv2RuleGroupRuleAction{..} =
    object $
    catMaybes
    [ fmap (("Allow",) . toJSON) _wAFv2RuleGroupRuleActionAllow
    , fmap (("Block",) . toJSON) _wAFv2RuleGroupRuleActionBlock
    , fmap (("Count",) . toJSON) _wAFv2RuleGroupRuleActionCount
    ]

-- | Constructor for 'WAFv2RuleGroupRuleAction' containing required fields as
-- arguments.
waFv2RuleGroupRuleAction
  :: WAFv2RuleGroupRuleAction
waFv2RuleGroupRuleAction  =
  WAFv2RuleGroupRuleAction
  { _wAFv2RuleGroupRuleActionAllow = Nothing
  , _wAFv2RuleGroupRuleActionBlock = Nothing
  , _wAFv2RuleGroupRuleActionCount = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-allow
wafrgraAllow :: Lens' WAFv2RuleGroupRuleAction (Maybe Object)
wafrgraAllow = lens _wAFv2RuleGroupRuleActionAllow (\s a -> s { _wAFv2RuleGroupRuleActionAllow = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-block
wafrgraBlock :: Lens' WAFv2RuleGroupRuleAction (Maybe Object)
wafrgraBlock = lens _wAFv2RuleGroupRuleActionBlock (\s a -> s { _wAFv2RuleGroupRuleActionBlock = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-count
wafrgraCount :: Lens' WAFv2RuleGroupRuleAction (Maybe Object)
wafrgraCount = lens _wAFv2RuleGroupRuleActionCount (\s a -> s { _wAFv2RuleGroupRuleActionCount = a })