packages feed

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

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

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

module Stratosphere.ResourceProperties.WAFv2WebACLStatementOne where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.WAFv2WebACLAndStatementOne
import Stratosphere.ResourceProperties.WAFv2WebACLByteMatchStatement
import Stratosphere.ResourceProperties.WAFv2WebACLGeoMatchStatement
import Stratosphere.ResourceProperties.WAFv2WebACLIPSetReferenceStatement
import Stratosphere.ResourceProperties.WAFv2WebACLManagedRuleGroupStatement
import Stratosphere.ResourceProperties.WAFv2WebACLNotStatementOne
import Stratosphere.ResourceProperties.WAFv2WebACLOrStatementOne
import Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementOne
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 WAFv2WebACLStatementOne. See
-- 'waFv2WebACLStatementOne' for a more convenient constructor.
data WAFv2WebACLStatementOne =
  WAFv2WebACLStatementOne
  { _wAFv2WebACLStatementOneAndStatement :: Maybe WAFv2WebACLAndStatementOne
  , _wAFv2WebACLStatementOneByteMatchStatement :: Maybe WAFv2WebACLByteMatchStatement
  , _wAFv2WebACLStatementOneGeoMatchStatement :: Maybe WAFv2WebACLGeoMatchStatement
  , _wAFv2WebACLStatementOneIPSetReferenceStatement :: Maybe WAFv2WebACLIPSetReferenceStatement
  , _wAFv2WebACLStatementOneManagedRuleGroupStatement :: Maybe WAFv2WebACLManagedRuleGroupStatement
  , _wAFv2WebACLStatementOneNotStatement :: Maybe WAFv2WebACLNotStatementOne
  , _wAFv2WebACLStatementOneOrStatement :: Maybe WAFv2WebACLOrStatementOne
  , _wAFv2WebACLStatementOneRateBasedStatement :: Maybe WAFv2WebACLRateBasedStatementOne
  , _wAFv2WebACLStatementOneRegexPatternSetReferenceStatement :: Maybe WAFv2WebACLRegexPatternSetReferenceStatement
  , _wAFv2WebACLStatementOneRuleGroupReferenceStatement :: Maybe WAFv2WebACLRuleGroupReferenceStatement
  , _wAFv2WebACLStatementOneSizeConstraintStatement :: Maybe WAFv2WebACLSizeConstraintStatement
  , _wAFv2WebACLStatementOneSqliMatchStatement :: Maybe WAFv2WebACLSqliMatchStatement
  , _wAFv2WebACLStatementOneXssMatchStatement :: Maybe WAFv2WebACLXssMatchStatement
  } deriving (Show, Eq)

instance ToJSON WAFv2WebACLStatementOne where
  toJSON WAFv2WebACLStatementOne{..} =
    object $
    catMaybes
    [ fmap (("AndStatement",) . toJSON) _wAFv2WebACLStatementOneAndStatement
    , fmap (("ByteMatchStatement",) . toJSON) _wAFv2WebACLStatementOneByteMatchStatement
    , fmap (("GeoMatchStatement",) . toJSON) _wAFv2WebACLStatementOneGeoMatchStatement
    , fmap (("IPSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementOneIPSetReferenceStatement
    , fmap (("ManagedRuleGroupStatement",) . toJSON) _wAFv2WebACLStatementOneManagedRuleGroupStatement
    , fmap (("NotStatement",) . toJSON) _wAFv2WebACLStatementOneNotStatement
    , fmap (("OrStatement",) . toJSON) _wAFv2WebACLStatementOneOrStatement
    , fmap (("RateBasedStatement",) . toJSON) _wAFv2WebACLStatementOneRateBasedStatement
    , fmap (("RegexPatternSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementOneRegexPatternSetReferenceStatement
    , fmap (("RuleGroupReferenceStatement",) . toJSON) _wAFv2WebACLStatementOneRuleGroupReferenceStatement
    , fmap (("SizeConstraintStatement",) . toJSON) _wAFv2WebACLStatementOneSizeConstraintStatement
    , fmap (("SqliMatchStatement",) . toJSON) _wAFv2WebACLStatementOneSqliMatchStatement
    , fmap (("XssMatchStatement",) . toJSON) _wAFv2WebACLStatementOneXssMatchStatement
    ]

-- | Constructor for 'WAFv2WebACLStatementOne' containing required fields as
-- arguments.
waFv2WebACLStatementOne
  :: WAFv2WebACLStatementOne
waFv2WebACLStatementOne  =
  WAFv2WebACLStatementOne
  { _wAFv2WebACLStatementOneAndStatement = Nothing
  , _wAFv2WebACLStatementOneByteMatchStatement = Nothing
  , _wAFv2WebACLStatementOneGeoMatchStatement = Nothing
  , _wAFv2WebACLStatementOneIPSetReferenceStatement = Nothing
  , _wAFv2WebACLStatementOneManagedRuleGroupStatement = Nothing
  , _wAFv2WebACLStatementOneNotStatement = Nothing
  , _wAFv2WebACLStatementOneOrStatement = Nothing
  , _wAFv2WebACLStatementOneRateBasedStatement = Nothing
  , _wAFv2WebACLStatementOneRegexPatternSetReferenceStatement = Nothing
  , _wAFv2WebACLStatementOneRuleGroupReferenceStatement = Nothing
  , _wAFv2WebACLStatementOneSizeConstraintStatement = Nothing
  , _wAFv2WebACLStatementOneSqliMatchStatement = Nothing
  , _wAFv2WebACLStatementOneXssMatchStatement = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-andstatement
wafwaclsoAndStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLAndStatementOne)
wafwaclsoAndStatement = lens _wAFv2WebACLStatementOneAndStatement (\s a -> s { _wAFv2WebACLStatementOneAndStatement = a })

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

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

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

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-notstatement
wafwaclsoNotStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLNotStatementOne)
wafwaclsoNotStatement = lens _wAFv2WebACLStatementOneNotStatement (\s a -> s { _wAFv2WebACLStatementOneNotStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-orstatement
wafwaclsoOrStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLOrStatementOne)
wafwaclsoOrStatement = lens _wAFv2WebACLStatementOneOrStatement (\s a -> s { _wAFv2WebACLStatementOneOrStatement = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-ratebasedstatement
wafwaclsoRateBasedStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLRateBasedStatementOne)
wafwaclsoRateBasedStatement = lens _wAFv2WebACLStatementOneRateBasedStatement (\s a -> s { _wAFv2WebACLStatementOneRateBasedStatement = a })

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

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

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

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

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