{-# 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.NetworkFirewall.Types.RuleGroup where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.NetworkFirewall.Types.ReferenceSets
import Amazonka.NetworkFirewall.Types.RuleVariables
import Amazonka.NetworkFirewall.Types.RulesSource
import Amazonka.NetworkFirewall.Types.StatefulRuleOptions
import qualified Amazonka.Prelude as Prelude
data RuleGroup = RuleGroup'
{
RuleGroup -> Maybe ReferenceSets
referenceSets :: Prelude.Maybe ReferenceSets,
RuleGroup -> Maybe RuleVariables
ruleVariables :: Prelude.Maybe RuleVariables,
RuleGroup -> Maybe StatefulRuleOptions
statefulRuleOptions :: Prelude.Maybe StatefulRuleOptions,
RuleGroup -> RulesSource
rulesSource :: RulesSource
}
deriving (RuleGroup -> RuleGroup -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RuleGroup -> RuleGroup -> Bool
$c/= :: RuleGroup -> RuleGroup -> Bool
== :: RuleGroup -> RuleGroup -> Bool
$c== :: RuleGroup -> RuleGroup -> Bool
Prelude.Eq, ReadPrec [RuleGroup]
ReadPrec RuleGroup
Int -> ReadS RuleGroup
ReadS [RuleGroup]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RuleGroup]
$creadListPrec :: ReadPrec [RuleGroup]
readPrec :: ReadPrec RuleGroup
$creadPrec :: ReadPrec RuleGroup
readList :: ReadS [RuleGroup]
$creadList :: ReadS [RuleGroup]
readsPrec :: Int -> ReadS RuleGroup
$creadsPrec :: Int -> ReadS RuleGroup
Prelude.Read, Int -> RuleGroup -> ShowS
[RuleGroup] -> ShowS
RuleGroup -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RuleGroup] -> ShowS
$cshowList :: [RuleGroup] -> ShowS
show :: RuleGroup -> String
$cshow :: RuleGroup -> String
showsPrec :: Int -> RuleGroup -> ShowS
$cshowsPrec :: Int -> RuleGroup -> ShowS
Prelude.Show, forall x. Rep RuleGroup x -> RuleGroup
forall x. RuleGroup -> Rep RuleGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RuleGroup x -> RuleGroup
$cfrom :: forall x. RuleGroup -> Rep RuleGroup x
Prelude.Generic)
newRuleGroup ::
RulesSource ->
RuleGroup
newRuleGroup :: RulesSource -> RuleGroup
newRuleGroup RulesSource
pRulesSource_ =
RuleGroup'
{ $sel:referenceSets:RuleGroup' :: Maybe ReferenceSets
referenceSets = forall a. Maybe a
Prelude.Nothing,
$sel:ruleVariables:RuleGroup' :: Maybe RuleVariables
ruleVariables = forall a. Maybe a
Prelude.Nothing,
$sel:statefulRuleOptions:RuleGroup' :: Maybe StatefulRuleOptions
statefulRuleOptions = forall a. Maybe a
Prelude.Nothing,
$sel:rulesSource:RuleGroup' :: RulesSource
rulesSource = RulesSource
pRulesSource_
}
ruleGroup_referenceSets :: Lens.Lens' RuleGroup (Prelude.Maybe ReferenceSets)
ruleGroup_referenceSets :: Lens' RuleGroup (Maybe ReferenceSets)
ruleGroup_referenceSets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RuleGroup' {Maybe ReferenceSets
referenceSets :: Maybe ReferenceSets
$sel:referenceSets:RuleGroup' :: RuleGroup -> Maybe ReferenceSets
referenceSets} -> Maybe ReferenceSets
referenceSets) (\s :: RuleGroup
s@RuleGroup' {} Maybe ReferenceSets
a -> RuleGroup
s {$sel:referenceSets:RuleGroup' :: Maybe ReferenceSets
referenceSets = Maybe ReferenceSets
a} :: RuleGroup)
ruleGroup_ruleVariables :: Lens.Lens' RuleGroup (Prelude.Maybe RuleVariables)
ruleGroup_ruleVariables :: Lens' RuleGroup (Maybe RuleVariables)
ruleGroup_ruleVariables = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RuleGroup' {Maybe RuleVariables
ruleVariables :: Maybe RuleVariables
$sel:ruleVariables:RuleGroup' :: RuleGroup -> Maybe RuleVariables
ruleVariables} -> Maybe RuleVariables
ruleVariables) (\s :: RuleGroup
s@RuleGroup' {} Maybe RuleVariables
a -> RuleGroup
s {$sel:ruleVariables:RuleGroup' :: Maybe RuleVariables
ruleVariables = Maybe RuleVariables
a} :: RuleGroup)
ruleGroup_statefulRuleOptions :: Lens.Lens' RuleGroup (Prelude.Maybe StatefulRuleOptions)
ruleGroup_statefulRuleOptions :: Lens' RuleGroup (Maybe StatefulRuleOptions)
ruleGroup_statefulRuleOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RuleGroup' {Maybe StatefulRuleOptions
statefulRuleOptions :: Maybe StatefulRuleOptions
$sel:statefulRuleOptions:RuleGroup' :: RuleGroup -> Maybe StatefulRuleOptions
statefulRuleOptions} -> Maybe StatefulRuleOptions
statefulRuleOptions) (\s :: RuleGroup
s@RuleGroup' {} Maybe StatefulRuleOptions
a -> RuleGroup
s {$sel:statefulRuleOptions:RuleGroup' :: Maybe StatefulRuleOptions
statefulRuleOptions = Maybe StatefulRuleOptions
a} :: RuleGroup)
ruleGroup_rulesSource :: Lens.Lens' RuleGroup RulesSource
ruleGroup_rulesSource :: Lens' RuleGroup RulesSource
ruleGroup_rulesSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RuleGroup' {RulesSource
rulesSource :: RulesSource
$sel:rulesSource:RuleGroup' :: RuleGroup -> RulesSource
rulesSource} -> RulesSource
rulesSource) (\s :: RuleGroup
s@RuleGroup' {} RulesSource
a -> RuleGroup
s {$sel:rulesSource:RuleGroup' :: RulesSource
rulesSource = RulesSource
a} :: RuleGroup)
instance Data.FromJSON RuleGroup where
parseJSON :: Value -> Parser RuleGroup
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"RuleGroup"
( \Object
x ->
Maybe ReferenceSets
-> Maybe RuleVariables
-> Maybe StatefulRuleOptions
-> RulesSource
-> RuleGroup
RuleGroup'
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
"ReferenceSets")
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
"RuleVariables")
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
"StatefulRuleOptions")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"RulesSource")
)
instance Prelude.Hashable RuleGroup where
hashWithSalt :: Int -> RuleGroup -> Int
hashWithSalt Int
_salt RuleGroup' {Maybe ReferenceSets
Maybe RuleVariables
Maybe StatefulRuleOptions
RulesSource
rulesSource :: RulesSource
statefulRuleOptions :: Maybe StatefulRuleOptions
ruleVariables :: Maybe RuleVariables
referenceSets :: Maybe ReferenceSets
$sel:rulesSource:RuleGroup' :: RuleGroup -> RulesSource
$sel:statefulRuleOptions:RuleGroup' :: RuleGroup -> Maybe StatefulRuleOptions
$sel:ruleVariables:RuleGroup' :: RuleGroup -> Maybe RuleVariables
$sel:referenceSets:RuleGroup' :: RuleGroup -> Maybe ReferenceSets
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReferenceSets
referenceSets
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RuleVariables
ruleVariables
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StatefulRuleOptions
statefulRuleOptions
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` RulesSource
rulesSource
instance Prelude.NFData RuleGroup where
rnf :: RuleGroup -> ()
rnf RuleGroup' {Maybe ReferenceSets
Maybe RuleVariables
Maybe StatefulRuleOptions
RulesSource
rulesSource :: RulesSource
statefulRuleOptions :: Maybe StatefulRuleOptions
ruleVariables :: Maybe RuleVariables
referenceSets :: Maybe ReferenceSets
$sel:rulesSource:RuleGroup' :: RuleGroup -> RulesSource
$sel:statefulRuleOptions:RuleGroup' :: RuleGroup -> Maybe StatefulRuleOptions
$sel:ruleVariables:RuleGroup' :: RuleGroup -> Maybe RuleVariables
$sel:referenceSets:RuleGroup' :: RuleGroup -> Maybe ReferenceSets
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe ReferenceSets
referenceSets
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RuleVariables
ruleVariables
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StatefulRuleOptions
statefulRuleOptions
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf RulesSource
rulesSource
instance Data.ToJSON RuleGroup where
toJSON :: RuleGroup -> Value
toJSON RuleGroup' {Maybe ReferenceSets
Maybe RuleVariables
Maybe StatefulRuleOptions
RulesSource
rulesSource :: RulesSource
statefulRuleOptions :: Maybe StatefulRuleOptions
ruleVariables :: Maybe RuleVariables
referenceSets :: Maybe ReferenceSets
$sel:rulesSource:RuleGroup' :: RuleGroup -> RulesSource
$sel:statefulRuleOptions:RuleGroup' :: RuleGroup -> Maybe StatefulRuleOptions
$sel:ruleVariables:RuleGroup' :: RuleGroup -> Maybe RuleVariables
$sel:referenceSets:RuleGroup' :: RuleGroup -> Maybe ReferenceSets
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"ReferenceSets" 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 ReferenceSets
referenceSets,
(Key
"RuleVariables" 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 RuleVariables
ruleVariables,
(Key
"StatefulRuleOptions" 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 StatefulRuleOptions
statefulRuleOptions,
forall a. a -> Maybe a
Prelude.Just (Key
"RulesSource" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= RulesSource
rulesSource)
]
)