packages feed

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

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

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

module Stratosphere.ResourceProperties.WAFv2WebACLStatementThree where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.WAFv2WebACLByteMatchStatement
import Stratosphere.ResourceProperties.WAFv2WebACLGeoMatchStatement
import Stratosphere.ResourceProperties.WAFv2WebACLIPSetReferenceStatement
import Stratosphere.ResourceProperties.WAFv2WebACLManagedRuleGroupStatement
import Stratosphere.ResourceProperties.WAFv2WebACLRegexPatternSetReferenceStatement
import Stratosphere.ResourceProperties.WAFv2WebACLRuleGroupReferenceStatement
import Stratosphere.ResourceProperties.WAFv2WebACLSizeConstraintStatement
import Stratosphere.ResourceProperties.WAFv2WebACLSqliMatchStatement
import Stratosphere.ResourceProperties.WAFv2WebACLXssMatchStatement

-- | Full data type definition for WAFv2WebACLStatementThree. See
-- 'waFv2WebACLStatementThree' for a more convenient constructor.
data WAFv2WebACLStatementThree =
  WAFv2WebACLStatementThree
  { _wAFv2WebACLStatementThreeByteMatchStatement :: Maybe WAFv2WebACLByteMatchStatement
  , _wAFv2WebACLStatementThreeGeoMatchStatement :: Maybe WAFv2WebACLGeoMatchStatement
  , _wAFv2WebACLStatementThreeIPSetReferenceStatement :: Maybe WAFv2WebACLIPSetReferenceStatement
  , _wAFv2WebACLStatementThreeManagedRuleGroupStatement :: Maybe WAFv2WebACLManagedRuleGroupStatement
  , _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement :: Maybe WAFv2WebACLRegexPatternSetReferenceStatement
  , _wAFv2WebACLStatementThreeRuleGroupReferenceStatement :: Maybe WAFv2WebACLRuleGroupReferenceStatement
  , _wAFv2WebACLStatementThreeSizeConstraintStatement :: Maybe WAFv2WebACLSizeConstraintStatement
  , _wAFv2WebACLStatementThreeSqliMatchStatement :: Maybe WAFv2WebACLSqliMatchStatement
  , _wAFv2WebACLStatementThreeXssMatchStatement :: Maybe WAFv2WebACLXssMatchStatement
  } deriving (Show, Eq)

instance ToJSON WAFv2WebACLStatementThree where
  toJSON WAFv2WebACLStatementThree{..} =
    object $
    catMaybes
    [ fmap (("ByteMatchStatement",) . toJSON) _wAFv2WebACLStatementThreeByteMatchStatement
    , fmap (("GeoMatchStatement",) . toJSON) _wAFv2WebACLStatementThreeGeoMatchStatement
    , fmap (("IPSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementThreeIPSetReferenceStatement
    , fmap (("ManagedRuleGroupStatement",) . toJSON) _wAFv2WebACLStatementThreeManagedRuleGroupStatement
    , fmap (("RegexPatternSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement
    , fmap (("RuleGroupReferenceStatement",) . toJSON) _wAFv2WebACLStatementThreeRuleGroupReferenceStatement
    , fmap (("SizeConstraintStatement",) . toJSON) _wAFv2WebACLStatementThreeSizeConstraintStatement
    , fmap (("SqliMatchStatement",) . toJSON) _wAFv2WebACLStatementThreeSqliMatchStatement
    , fmap (("XssMatchStatement",) . toJSON) _wAFv2WebACLStatementThreeXssMatchStatement
    ]

-- | Constructor for 'WAFv2WebACLStatementThree' containing required fields as
-- arguments.
waFv2WebACLStatementThree
  :: WAFv2WebACLStatementThree
waFv2WebACLStatementThree  =
  WAFv2WebACLStatementThree
  { _wAFv2WebACLStatementThreeByteMatchStatement = Nothing
  , _wAFv2WebACLStatementThreeGeoMatchStatement = Nothing
  , _wAFv2WebACLStatementThreeIPSetReferenceStatement = Nothing
  , _wAFv2WebACLStatementThreeManagedRuleGroupStatement = Nothing
  , _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement = Nothing
  , _wAFv2WebACLStatementThreeRuleGroupReferenceStatement = Nothing
  , _wAFv2WebACLStatementThreeSizeConstraintStatement = Nothing
  , _wAFv2WebACLStatementThreeSqliMatchStatement = Nothing
  , _wAFv2WebACLStatementThreeXssMatchStatement = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-bytematchstatement
wafwaclsthByteMatchStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLByteMatchStatement)
wafwaclsthByteMatchStatement = lens _wAFv2WebACLStatementThreeByteMatchStatement (\s a -> s { _wAFv2WebACLStatementThreeByteMatchStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-geomatchstatement
wafwaclsthGeoMatchStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLGeoMatchStatement)
wafwaclsthGeoMatchStatement = lens _wAFv2WebACLStatementThreeGeoMatchStatement (\s a -> s { _wAFv2WebACLStatementThreeGeoMatchStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-ipsetreferencestatement
wafwaclsthIPSetReferenceStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLIPSetReferenceStatement)
wafwaclsthIPSetReferenceStatement = lens _wAFv2WebACLStatementThreeIPSetReferenceStatement (\s a -> s { _wAFv2WebACLStatementThreeIPSetReferenceStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-managedrulegroupstatement
wafwaclsthManagedRuleGroupStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLManagedRuleGroupStatement)
wafwaclsthManagedRuleGroupStatement = lens _wAFv2WebACLStatementThreeManagedRuleGroupStatement (\s a -> s { _wAFv2WebACLStatementThreeManagedRuleGroupStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-regexpatternsetreferencestatement
wafwaclsthRegexPatternSetReferenceStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLRegexPatternSetReferenceStatement)
wafwaclsthRegexPatternSetReferenceStatement = lens _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement (\s a -> s { _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-rulegroupreferencestatement
wafwaclsthRuleGroupReferenceStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLRuleGroupReferenceStatement)
wafwaclsthRuleGroupReferenceStatement = lens _wAFv2WebACLStatementThreeRuleGroupReferenceStatement (\s a -> s { _wAFv2WebACLStatementThreeRuleGroupReferenceStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-sizeconstraintstatement
wafwaclsthSizeConstraintStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLSizeConstraintStatement)
wafwaclsthSizeConstraintStatement = lens _wAFv2WebACLStatementThreeSizeConstraintStatement (\s a -> s { _wAFv2WebACLStatementThreeSizeConstraintStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-sqlimatchstatement
wafwaclsthSqliMatchStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLSqliMatchStatement)
wafwaclsthSqliMatchStatement = lens _wAFv2WebACLStatementThreeSqliMatchStatement (\s a -> s { _wAFv2WebACLStatementThreeSqliMatchStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-xssmatchstatement
wafwaclsthXssMatchStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLXssMatchStatement)
wafwaclsthXssMatchStatement = lens _wAFv2WebACLStatementThreeXssMatchStatement (\s a -> s { _wAFv2WebACLStatementThreeXssMatchStatement = a })