{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.WAFV2.Types.Statement where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import {-# SOURCE #-} Amazonka.WAFV2.Types.AndStatement
import Amazonka.WAFV2.Types.ByteMatchStatement
import Amazonka.WAFV2.Types.GeoMatchStatement
import Amazonka.WAFV2.Types.IPSetReferenceStatement
import Amazonka.WAFV2.Types.LabelMatchStatement
import {-# SOURCE #-} Amazonka.WAFV2.Types.ManagedRuleGroupStatement
import {-# SOURCE #-} Amazonka.WAFV2.Types.NotStatement
import {-# SOURCE #-} Amazonka.WAFV2.Types.OrStatement
import {-# SOURCE #-} Amazonka.WAFV2.Types.RateBasedStatement
import Amazonka.WAFV2.Types.RegexMatchStatement
import Amazonka.WAFV2.Types.RegexPatternSetReferenceStatement
import Amazonka.WAFV2.Types.RuleGroupReferenceStatement
import Amazonka.WAFV2.Types.SizeConstraintStatement
import Amazonka.WAFV2.Types.SqliMatchStatement
import Amazonka.WAFV2.Types.XssMatchStatement
data Statement = Statement'
{
Statement -> Maybe AndStatement
andStatement :: Prelude.Maybe AndStatement,
Statement -> Maybe ByteMatchStatement
byteMatchStatement :: Prelude.Maybe ByteMatchStatement,
Statement -> Maybe GeoMatchStatement
geoMatchStatement :: Prelude.Maybe GeoMatchStatement,
Statement -> Maybe IPSetReferenceStatement
iPSetReferenceStatement :: Prelude.Maybe IPSetReferenceStatement,
Statement -> Maybe LabelMatchStatement
labelMatchStatement :: Prelude.Maybe LabelMatchStatement,
Statement -> Maybe ManagedRuleGroupStatement
managedRuleGroupStatement :: Prelude.Maybe ManagedRuleGroupStatement,
Statement -> Maybe NotStatement
notStatement :: Prelude.Maybe NotStatement,
Statement -> Maybe OrStatement
orStatement :: Prelude.Maybe OrStatement,
Statement -> Maybe RateBasedStatement
rateBasedStatement :: Prelude.Maybe RateBasedStatement,
Statement -> Maybe RegexMatchStatement
regexMatchStatement :: Prelude.Maybe RegexMatchStatement,
Statement -> Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement :: Prelude.Maybe RegexPatternSetReferenceStatement,
Statement -> Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement :: Prelude.Maybe RuleGroupReferenceStatement,
Statement -> Maybe SizeConstraintStatement
sizeConstraintStatement :: Prelude.Maybe SizeConstraintStatement,
Statement -> Maybe SqliMatchStatement
sqliMatchStatement :: Prelude.Maybe SqliMatchStatement,
Statement -> Maybe XssMatchStatement
xssMatchStatement :: Prelude.Maybe XssMatchStatement
}
deriving (Statement -> Statement -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Statement -> Statement -> Bool
$c/= :: Statement -> Statement -> Bool
== :: Statement -> Statement -> Bool
$c== :: Statement -> Statement -> Bool
Prelude.Eq, ReadPrec [Statement]
ReadPrec Statement
Int -> ReadS Statement
ReadS [Statement]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Statement]
$creadListPrec :: ReadPrec [Statement]
readPrec :: ReadPrec Statement
$creadPrec :: ReadPrec Statement
readList :: ReadS [Statement]
$creadList :: ReadS [Statement]
readsPrec :: Int -> ReadS Statement
$creadsPrec :: Int -> ReadS Statement
Prelude.Read, Int -> Statement -> ShowS
[Statement] -> ShowS
Statement -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Statement] -> ShowS
$cshowList :: [Statement] -> ShowS
show :: Statement -> String
$cshow :: Statement -> String
showsPrec :: Int -> Statement -> ShowS
$cshowsPrec :: Int -> Statement -> ShowS
Prelude.Show, forall x. Rep Statement x -> Statement
forall x. Statement -> Rep Statement x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Statement x -> Statement
$cfrom :: forall x. Statement -> Rep Statement x
Prelude.Generic)
newStatement ::
Statement
newStatement :: Statement
newStatement =
Statement'
{ $sel:andStatement:Statement' :: Maybe AndStatement
andStatement = forall a. Maybe a
Prelude.Nothing,
$sel:byteMatchStatement:Statement' :: Maybe ByteMatchStatement
byteMatchStatement = forall a. Maybe a
Prelude.Nothing,
$sel:geoMatchStatement:Statement' :: Maybe GeoMatchStatement
geoMatchStatement = forall a. Maybe a
Prelude.Nothing,
$sel:iPSetReferenceStatement:Statement' :: Maybe IPSetReferenceStatement
iPSetReferenceStatement = forall a. Maybe a
Prelude.Nothing,
$sel:labelMatchStatement:Statement' :: Maybe LabelMatchStatement
labelMatchStatement = forall a. Maybe a
Prelude.Nothing,
$sel:managedRuleGroupStatement:Statement' :: Maybe ManagedRuleGroupStatement
managedRuleGroupStatement = forall a. Maybe a
Prelude.Nothing,
$sel:notStatement:Statement' :: Maybe NotStatement
notStatement = forall a. Maybe a
Prelude.Nothing,
$sel:orStatement:Statement' :: Maybe OrStatement
orStatement = forall a. Maybe a
Prelude.Nothing,
$sel:rateBasedStatement:Statement' :: Maybe RateBasedStatement
rateBasedStatement = forall a. Maybe a
Prelude.Nothing,
$sel:regexMatchStatement:Statement' :: Maybe RegexMatchStatement
regexMatchStatement = forall a. Maybe a
Prelude.Nothing,
$sel:regexPatternSetReferenceStatement:Statement' :: Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement = forall a. Maybe a
Prelude.Nothing,
$sel:ruleGroupReferenceStatement:Statement' :: Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement = forall a. Maybe a
Prelude.Nothing,
$sel:sizeConstraintStatement:Statement' :: Maybe SizeConstraintStatement
sizeConstraintStatement = forall a. Maybe a
Prelude.Nothing,
$sel:sqliMatchStatement:Statement' :: Maybe SqliMatchStatement
sqliMatchStatement = forall a. Maybe a
Prelude.Nothing,
$sel:xssMatchStatement:Statement' :: Maybe XssMatchStatement
xssMatchStatement = forall a. Maybe a
Prelude.Nothing
}
statement_andStatement :: Lens.Lens' Statement (Prelude.Maybe AndStatement)
statement_andStatement :: Lens' Statement (Maybe AndStatement)
statement_andStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe AndStatement
andStatement :: Maybe AndStatement
$sel:andStatement:Statement' :: Statement -> Maybe AndStatement
andStatement} -> Maybe AndStatement
andStatement) (\s :: Statement
s@Statement' {} Maybe AndStatement
a -> Statement
s {$sel:andStatement:Statement' :: Maybe AndStatement
andStatement = Maybe AndStatement
a} :: Statement)
statement_byteMatchStatement :: Lens.Lens' Statement (Prelude.Maybe ByteMatchStatement)
statement_byteMatchStatement :: Lens' Statement (Maybe ByteMatchStatement)
statement_byteMatchStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe ByteMatchStatement
byteMatchStatement :: Maybe ByteMatchStatement
$sel:byteMatchStatement:Statement' :: Statement -> Maybe ByteMatchStatement
byteMatchStatement} -> Maybe ByteMatchStatement
byteMatchStatement) (\s :: Statement
s@Statement' {} Maybe ByteMatchStatement
a -> Statement
s {$sel:byteMatchStatement:Statement' :: Maybe ByteMatchStatement
byteMatchStatement = Maybe ByteMatchStatement
a} :: Statement)
statement_geoMatchStatement :: Lens.Lens' Statement (Prelude.Maybe GeoMatchStatement)
statement_geoMatchStatement :: Lens' Statement (Maybe GeoMatchStatement)
statement_geoMatchStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe GeoMatchStatement
geoMatchStatement :: Maybe GeoMatchStatement
$sel:geoMatchStatement:Statement' :: Statement -> Maybe GeoMatchStatement
geoMatchStatement} -> Maybe GeoMatchStatement
geoMatchStatement) (\s :: Statement
s@Statement' {} Maybe GeoMatchStatement
a -> Statement
s {$sel:geoMatchStatement:Statement' :: Maybe GeoMatchStatement
geoMatchStatement = Maybe GeoMatchStatement
a} :: Statement)
statement_iPSetReferenceStatement :: Lens.Lens' Statement (Prelude.Maybe IPSetReferenceStatement)
statement_iPSetReferenceStatement :: Lens' Statement (Maybe IPSetReferenceStatement)
statement_iPSetReferenceStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe IPSetReferenceStatement
iPSetReferenceStatement :: Maybe IPSetReferenceStatement
$sel:iPSetReferenceStatement:Statement' :: Statement -> Maybe IPSetReferenceStatement
iPSetReferenceStatement} -> Maybe IPSetReferenceStatement
iPSetReferenceStatement) (\s :: Statement
s@Statement' {} Maybe IPSetReferenceStatement
a -> Statement
s {$sel:iPSetReferenceStatement:Statement' :: Maybe IPSetReferenceStatement
iPSetReferenceStatement = Maybe IPSetReferenceStatement
a} :: Statement)
statement_labelMatchStatement :: Lens.Lens' Statement (Prelude.Maybe LabelMatchStatement)
statement_labelMatchStatement :: Lens' Statement (Maybe LabelMatchStatement)
statement_labelMatchStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe LabelMatchStatement
labelMatchStatement :: Maybe LabelMatchStatement
$sel:labelMatchStatement:Statement' :: Statement -> Maybe LabelMatchStatement
labelMatchStatement} -> Maybe LabelMatchStatement
labelMatchStatement) (\s :: Statement
s@Statement' {} Maybe LabelMatchStatement
a -> Statement
s {$sel:labelMatchStatement:Statement' :: Maybe LabelMatchStatement
labelMatchStatement = Maybe LabelMatchStatement
a} :: Statement)
statement_managedRuleGroupStatement :: Lens.Lens' Statement (Prelude.Maybe ManagedRuleGroupStatement)
statement_managedRuleGroupStatement :: Lens' Statement (Maybe ManagedRuleGroupStatement)
statement_managedRuleGroupStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe ManagedRuleGroupStatement
managedRuleGroupStatement :: Maybe ManagedRuleGroupStatement
$sel:managedRuleGroupStatement:Statement' :: Statement -> Maybe ManagedRuleGroupStatement
managedRuleGroupStatement} -> Maybe ManagedRuleGroupStatement
managedRuleGroupStatement) (\s :: Statement
s@Statement' {} Maybe ManagedRuleGroupStatement
a -> Statement
s {$sel:managedRuleGroupStatement:Statement' :: Maybe ManagedRuleGroupStatement
managedRuleGroupStatement = Maybe ManagedRuleGroupStatement
a} :: Statement)
statement_notStatement :: Lens.Lens' Statement (Prelude.Maybe NotStatement)
statement_notStatement :: Lens' Statement (Maybe NotStatement)
statement_notStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe NotStatement
notStatement :: Maybe NotStatement
$sel:notStatement:Statement' :: Statement -> Maybe NotStatement
notStatement} -> Maybe NotStatement
notStatement) (\s :: Statement
s@Statement' {} Maybe NotStatement
a -> Statement
s {$sel:notStatement:Statement' :: Maybe NotStatement
notStatement = Maybe NotStatement
a} :: Statement)
statement_orStatement :: Lens.Lens' Statement (Prelude.Maybe OrStatement)
statement_orStatement :: Lens' Statement (Maybe OrStatement)
statement_orStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe OrStatement
orStatement :: Maybe OrStatement
$sel:orStatement:Statement' :: Statement -> Maybe OrStatement
orStatement} -> Maybe OrStatement
orStatement) (\s :: Statement
s@Statement' {} Maybe OrStatement
a -> Statement
s {$sel:orStatement:Statement' :: Maybe OrStatement
orStatement = Maybe OrStatement
a} :: Statement)
statement_rateBasedStatement :: Lens.Lens' Statement (Prelude.Maybe RateBasedStatement)
statement_rateBasedStatement :: Lens' Statement (Maybe RateBasedStatement)
statement_rateBasedStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe RateBasedStatement
rateBasedStatement :: Maybe RateBasedStatement
$sel:rateBasedStatement:Statement' :: Statement -> Maybe RateBasedStatement
rateBasedStatement} -> Maybe RateBasedStatement
rateBasedStatement) (\s :: Statement
s@Statement' {} Maybe RateBasedStatement
a -> Statement
s {$sel:rateBasedStatement:Statement' :: Maybe RateBasedStatement
rateBasedStatement = Maybe RateBasedStatement
a} :: Statement)
statement_regexMatchStatement :: Lens.Lens' Statement (Prelude.Maybe RegexMatchStatement)
statement_regexMatchStatement :: Lens' Statement (Maybe RegexMatchStatement)
statement_regexMatchStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe RegexMatchStatement
regexMatchStatement :: Maybe RegexMatchStatement
$sel:regexMatchStatement:Statement' :: Statement -> Maybe RegexMatchStatement
regexMatchStatement} -> Maybe RegexMatchStatement
regexMatchStatement) (\s :: Statement
s@Statement' {} Maybe RegexMatchStatement
a -> Statement
s {$sel:regexMatchStatement:Statement' :: Maybe RegexMatchStatement
regexMatchStatement = Maybe RegexMatchStatement
a} :: Statement)
statement_regexPatternSetReferenceStatement :: Lens.Lens' Statement (Prelude.Maybe RegexPatternSetReferenceStatement)
statement_regexPatternSetReferenceStatement :: Lens' Statement (Maybe RegexPatternSetReferenceStatement)
statement_regexPatternSetReferenceStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement :: Maybe RegexPatternSetReferenceStatement
$sel:regexPatternSetReferenceStatement:Statement' :: Statement -> Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement} -> Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement) (\s :: Statement
s@Statement' {} Maybe RegexPatternSetReferenceStatement
a -> Statement
s {$sel:regexPatternSetReferenceStatement:Statement' :: Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement = Maybe RegexPatternSetReferenceStatement
a} :: Statement)
statement_ruleGroupReferenceStatement :: Lens.Lens' Statement (Prelude.Maybe RuleGroupReferenceStatement)
statement_ruleGroupReferenceStatement :: Lens' Statement (Maybe RuleGroupReferenceStatement)
statement_ruleGroupReferenceStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement :: Maybe RuleGroupReferenceStatement
$sel:ruleGroupReferenceStatement:Statement' :: Statement -> Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement} -> Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement) (\s :: Statement
s@Statement' {} Maybe RuleGroupReferenceStatement
a -> Statement
s {$sel:ruleGroupReferenceStatement:Statement' :: Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement = Maybe RuleGroupReferenceStatement
a} :: Statement)
statement_sizeConstraintStatement :: Lens.Lens' Statement (Prelude.Maybe SizeConstraintStatement)
statement_sizeConstraintStatement :: Lens' Statement (Maybe SizeConstraintStatement)
statement_sizeConstraintStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe SizeConstraintStatement
sizeConstraintStatement :: Maybe SizeConstraintStatement
$sel:sizeConstraintStatement:Statement' :: Statement -> Maybe SizeConstraintStatement
sizeConstraintStatement} -> Maybe SizeConstraintStatement
sizeConstraintStatement) (\s :: Statement
s@Statement' {} Maybe SizeConstraintStatement
a -> Statement
s {$sel:sizeConstraintStatement:Statement' :: Maybe SizeConstraintStatement
sizeConstraintStatement = Maybe SizeConstraintStatement
a} :: Statement)
statement_sqliMatchStatement :: Lens.Lens' Statement (Prelude.Maybe SqliMatchStatement)
statement_sqliMatchStatement :: Lens' Statement (Maybe SqliMatchStatement)
statement_sqliMatchStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe SqliMatchStatement
sqliMatchStatement :: Maybe SqliMatchStatement
$sel:sqliMatchStatement:Statement' :: Statement -> Maybe SqliMatchStatement
sqliMatchStatement} -> Maybe SqliMatchStatement
sqliMatchStatement) (\s :: Statement
s@Statement' {} Maybe SqliMatchStatement
a -> Statement
s {$sel:sqliMatchStatement:Statement' :: Maybe SqliMatchStatement
sqliMatchStatement = Maybe SqliMatchStatement
a} :: Statement)
statement_xssMatchStatement :: Lens.Lens' Statement (Prelude.Maybe XssMatchStatement)
statement_xssMatchStatement :: Lens' Statement (Maybe XssMatchStatement)
statement_xssMatchStatement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Statement' {Maybe XssMatchStatement
xssMatchStatement :: Maybe XssMatchStatement
$sel:xssMatchStatement:Statement' :: Statement -> Maybe XssMatchStatement
xssMatchStatement} -> Maybe XssMatchStatement
xssMatchStatement) (\s :: Statement
s@Statement' {} Maybe XssMatchStatement
a -> Statement
s {$sel:xssMatchStatement:Statement' :: Maybe XssMatchStatement
xssMatchStatement = Maybe XssMatchStatement
a} :: Statement)
instance Data.FromJSON Statement where
parseJSON :: Value -> Parser Statement
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Statement"
( \Object
x ->
Maybe AndStatement
-> Maybe ByteMatchStatement
-> Maybe GeoMatchStatement
-> Maybe IPSetReferenceStatement
-> Maybe LabelMatchStatement
-> Maybe ManagedRuleGroupStatement
-> Maybe NotStatement
-> Maybe OrStatement
-> Maybe RateBasedStatement
-> Maybe RegexMatchStatement
-> Maybe RegexPatternSetReferenceStatement
-> Maybe RuleGroupReferenceStatement
-> Maybe SizeConstraintStatement
-> Maybe SqliMatchStatement
-> Maybe XssMatchStatement
-> Statement
Statement'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AndStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ByteMatchStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"GeoMatchStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"IPSetReferenceStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LabelMatchStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ManagedRuleGroupStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"NotStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"OrStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RateBasedStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RegexMatchStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RegexPatternSetReferenceStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RuleGroupReferenceStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SizeConstraintStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SqliMatchStatement")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"XssMatchStatement")
)
instance Prelude.Hashable Statement where
hashWithSalt :: Int -> Statement -> Int
hashWithSalt Int
_salt Statement' {Maybe AndStatement
Maybe GeoMatchStatement
Maybe IPSetReferenceStatement
Maybe LabelMatchStatement
Maybe ManagedRuleGroupStatement
Maybe NotStatement
Maybe OrStatement
Maybe RateBasedStatement
Maybe RuleGroupReferenceStatement
Maybe SqliMatchStatement
Maybe SizeConstraintStatement
Maybe RegexPatternSetReferenceStatement
Maybe RegexMatchStatement
Maybe ByteMatchStatement
Maybe XssMatchStatement
xssMatchStatement :: Maybe XssMatchStatement
sqliMatchStatement :: Maybe SqliMatchStatement
sizeConstraintStatement :: Maybe SizeConstraintStatement
ruleGroupReferenceStatement :: Maybe RuleGroupReferenceStatement
regexPatternSetReferenceStatement :: Maybe RegexPatternSetReferenceStatement
regexMatchStatement :: Maybe RegexMatchStatement
rateBasedStatement :: Maybe RateBasedStatement
orStatement :: Maybe OrStatement
notStatement :: Maybe NotStatement
managedRuleGroupStatement :: Maybe ManagedRuleGroupStatement
labelMatchStatement :: Maybe LabelMatchStatement
iPSetReferenceStatement :: Maybe IPSetReferenceStatement
geoMatchStatement :: Maybe GeoMatchStatement
byteMatchStatement :: Maybe ByteMatchStatement
andStatement :: Maybe AndStatement
$sel:xssMatchStatement:Statement' :: Statement -> Maybe XssMatchStatement
$sel:sqliMatchStatement:Statement' :: Statement -> Maybe SqliMatchStatement
$sel:sizeConstraintStatement:Statement' :: Statement -> Maybe SizeConstraintStatement
$sel:ruleGroupReferenceStatement:Statement' :: Statement -> Maybe RuleGroupReferenceStatement
$sel:regexPatternSetReferenceStatement:Statement' :: Statement -> Maybe RegexPatternSetReferenceStatement
$sel:regexMatchStatement:Statement' :: Statement -> Maybe RegexMatchStatement
$sel:rateBasedStatement:Statement' :: Statement -> Maybe RateBasedStatement
$sel:orStatement:Statement' :: Statement -> Maybe OrStatement
$sel:notStatement:Statement' :: Statement -> Maybe NotStatement
$sel:managedRuleGroupStatement:Statement' :: Statement -> Maybe ManagedRuleGroupStatement
$sel:labelMatchStatement:Statement' :: Statement -> Maybe LabelMatchStatement
$sel:iPSetReferenceStatement:Statement' :: Statement -> Maybe IPSetReferenceStatement
$sel:geoMatchStatement:Statement' :: Statement -> Maybe GeoMatchStatement
$sel:byteMatchStatement:Statement' :: Statement -> Maybe ByteMatchStatement
$sel:andStatement:Statement' :: Statement -> Maybe AndStatement
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AndStatement
andStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ByteMatchStatement
byteMatchStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe GeoMatchStatement
geoMatchStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IPSetReferenceStatement
iPSetReferenceStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LabelMatchStatement
labelMatchStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ManagedRuleGroupStatement
managedRuleGroupStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NotStatement
notStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OrStatement
orStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RateBasedStatement
rateBasedStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RegexMatchStatement
regexMatchStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SizeConstraintStatement
sizeConstraintStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SqliMatchStatement
sqliMatchStatement
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe XssMatchStatement
xssMatchStatement
instance Prelude.NFData Statement where
rnf :: Statement -> ()
rnf Statement' {Maybe AndStatement
Maybe GeoMatchStatement
Maybe IPSetReferenceStatement
Maybe LabelMatchStatement
Maybe ManagedRuleGroupStatement
Maybe NotStatement
Maybe OrStatement
Maybe RateBasedStatement
Maybe RuleGroupReferenceStatement
Maybe SqliMatchStatement
Maybe SizeConstraintStatement
Maybe RegexPatternSetReferenceStatement
Maybe RegexMatchStatement
Maybe ByteMatchStatement
Maybe XssMatchStatement
xssMatchStatement :: Maybe XssMatchStatement
sqliMatchStatement :: Maybe SqliMatchStatement
sizeConstraintStatement :: Maybe SizeConstraintStatement
ruleGroupReferenceStatement :: Maybe RuleGroupReferenceStatement
regexPatternSetReferenceStatement :: Maybe RegexPatternSetReferenceStatement
regexMatchStatement :: Maybe RegexMatchStatement
rateBasedStatement :: Maybe RateBasedStatement
orStatement :: Maybe OrStatement
notStatement :: Maybe NotStatement
managedRuleGroupStatement :: Maybe ManagedRuleGroupStatement
labelMatchStatement :: Maybe LabelMatchStatement
iPSetReferenceStatement :: Maybe IPSetReferenceStatement
geoMatchStatement :: Maybe GeoMatchStatement
byteMatchStatement :: Maybe ByteMatchStatement
andStatement :: Maybe AndStatement
$sel:xssMatchStatement:Statement' :: Statement -> Maybe XssMatchStatement
$sel:sqliMatchStatement:Statement' :: Statement -> Maybe SqliMatchStatement
$sel:sizeConstraintStatement:Statement' :: Statement -> Maybe SizeConstraintStatement
$sel:ruleGroupReferenceStatement:Statement' :: Statement -> Maybe RuleGroupReferenceStatement
$sel:regexPatternSetReferenceStatement:Statement' :: Statement -> Maybe RegexPatternSetReferenceStatement
$sel:regexMatchStatement:Statement' :: Statement -> Maybe RegexMatchStatement
$sel:rateBasedStatement:Statement' :: Statement -> Maybe RateBasedStatement
$sel:orStatement:Statement' :: Statement -> Maybe OrStatement
$sel:notStatement:Statement' :: Statement -> Maybe NotStatement
$sel:managedRuleGroupStatement:Statement' :: Statement -> Maybe ManagedRuleGroupStatement
$sel:labelMatchStatement:Statement' :: Statement -> Maybe LabelMatchStatement
$sel:iPSetReferenceStatement:Statement' :: Statement -> Maybe IPSetReferenceStatement
$sel:geoMatchStatement:Statement' :: Statement -> Maybe GeoMatchStatement
$sel:byteMatchStatement:Statement' :: Statement -> Maybe ByteMatchStatement
$sel:andStatement:Statement' :: Statement -> Maybe AndStatement
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe AndStatement
andStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ByteMatchStatement
byteMatchStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe GeoMatchStatement
geoMatchStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IPSetReferenceStatement
iPSetReferenceStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LabelMatchStatement
labelMatchStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ManagedRuleGroupStatement
managedRuleGroupStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NotStatement
notStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OrStatement
orStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RateBasedStatement
rateBasedStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RegexMatchStatement
regexMatchStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SizeConstraintStatement
sizeConstraintStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SqliMatchStatement
sqliMatchStatement
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe XssMatchStatement
xssMatchStatement
instance Data.ToJSON Statement where
toJSON :: Statement -> Value
toJSON Statement' {Maybe AndStatement
Maybe GeoMatchStatement
Maybe IPSetReferenceStatement
Maybe LabelMatchStatement
Maybe ManagedRuleGroupStatement
Maybe NotStatement
Maybe OrStatement
Maybe RateBasedStatement
Maybe RuleGroupReferenceStatement
Maybe SqliMatchStatement
Maybe SizeConstraintStatement
Maybe RegexPatternSetReferenceStatement
Maybe RegexMatchStatement
Maybe ByteMatchStatement
Maybe XssMatchStatement
xssMatchStatement :: Maybe XssMatchStatement
sqliMatchStatement :: Maybe SqliMatchStatement
sizeConstraintStatement :: Maybe SizeConstraintStatement
ruleGroupReferenceStatement :: Maybe RuleGroupReferenceStatement
regexPatternSetReferenceStatement :: Maybe RegexPatternSetReferenceStatement
regexMatchStatement :: Maybe RegexMatchStatement
rateBasedStatement :: Maybe RateBasedStatement
orStatement :: Maybe OrStatement
notStatement :: Maybe NotStatement
managedRuleGroupStatement :: Maybe ManagedRuleGroupStatement
labelMatchStatement :: Maybe LabelMatchStatement
iPSetReferenceStatement :: Maybe IPSetReferenceStatement
geoMatchStatement :: Maybe GeoMatchStatement
byteMatchStatement :: Maybe ByteMatchStatement
andStatement :: Maybe AndStatement
$sel:xssMatchStatement:Statement' :: Statement -> Maybe XssMatchStatement
$sel:sqliMatchStatement:Statement' :: Statement -> Maybe SqliMatchStatement
$sel:sizeConstraintStatement:Statement' :: Statement -> Maybe SizeConstraintStatement
$sel:ruleGroupReferenceStatement:Statement' :: Statement -> Maybe RuleGroupReferenceStatement
$sel:regexPatternSetReferenceStatement:Statement' :: Statement -> Maybe RegexPatternSetReferenceStatement
$sel:regexMatchStatement:Statement' :: Statement -> Maybe RegexMatchStatement
$sel:rateBasedStatement:Statement' :: Statement -> Maybe RateBasedStatement
$sel:orStatement:Statement' :: Statement -> Maybe OrStatement
$sel:notStatement:Statement' :: Statement -> Maybe NotStatement
$sel:managedRuleGroupStatement:Statement' :: Statement -> Maybe ManagedRuleGroupStatement
$sel:labelMatchStatement:Statement' :: Statement -> Maybe LabelMatchStatement
$sel:iPSetReferenceStatement:Statement' :: Statement -> Maybe IPSetReferenceStatement
$sel:geoMatchStatement:Statement' :: Statement -> Maybe GeoMatchStatement
$sel:byteMatchStatement:Statement' :: Statement -> Maybe ByteMatchStatement
$sel:andStatement:Statement' :: Statement -> Maybe AndStatement
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"AndStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AndStatement
andStatement,
(Key
"ByteMatchStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ByteMatchStatement
byteMatchStatement,
(Key
"GeoMatchStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe GeoMatchStatement
geoMatchStatement,
(Key
"IPSetReferenceStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe IPSetReferenceStatement
iPSetReferenceStatement,
(Key
"LabelMatchStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LabelMatchStatement
labelMatchStatement,
(Key
"ManagedRuleGroupStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ManagedRuleGroupStatement
managedRuleGroupStatement,
(Key
"NotStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe NotStatement
notStatement,
(Key
"OrStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OrStatement
orStatement,
(Key
"RateBasedStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RateBasedStatement
rateBasedStatement,
(Key
"RegexMatchStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RegexMatchStatement
regexMatchStatement,
(Key
"RegexPatternSetReferenceStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RegexPatternSetReferenceStatement
regexPatternSetReferenceStatement,
(Key
"RuleGroupReferenceStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RuleGroupReferenceStatement
ruleGroupReferenceStatement,
(Key
"SizeConstraintStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SizeConstraintStatement
sizeConstraintStatement,
(Key
"SqliMatchStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SqliMatchStatement
sqliMatchStatement,
(Key
"XssMatchStatement" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe XssMatchStatement
xssMatchStatement
]
)