amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsWafv2RulesDetails.hs
{-# 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 #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.SecurityHub.Types.AwsWafv2RulesDetails
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SecurityHub.Types.AwsWafv2RulesDetails 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 Amazonka.SecurityHub.Types.AwsWafv2RulesActionDetails
import Amazonka.SecurityHub.Types.AwsWafv2VisibilityConfigDetails
-- | Provides details about rules in a rule group. A rule identifies web
-- requests that you want to allow, block, or count. Each rule includes one
-- top-level Statement that AWS WAF uses to identify matching web requests,
-- and parameters that govern how AWS WAF handles them.
--
-- /See:/ 'newAwsWafv2RulesDetails' smart constructor.
data AwsWafv2RulesDetails = AwsWafv2RulesDetails'
{ -- | The action that WAF should take on a web request when it matches the
-- rule statement. Settings at the web ACL level can override the rule
-- action setting.
action :: Prelude.Maybe AwsWafv2RulesActionDetails,
-- | The name of the rule.
name :: Prelude.Maybe Prelude.Text,
-- | The action to use in the place of the action that results from the rule
-- group evaluation.
overrideAction :: Prelude.Maybe Prelude.Text,
-- | If you define more than one Rule in a WebACL, WAF evaluates each request
-- against the Rules in order based on the value of @Priority@. WAF
-- processes rules with lower priority first. The priorities don\'t need to
-- be consecutive, but they must all be different.
priority :: Prelude.Maybe Prelude.Int,
-- | Defines and enables Amazon CloudWatch metrics and web request sample
-- collection.
visibilityConfig :: Prelude.Maybe AwsWafv2VisibilityConfigDetails
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'AwsWafv2RulesDetails' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'action', 'awsWafv2RulesDetails_action' - The action that WAF should take on a web request when it matches the
-- rule statement. Settings at the web ACL level can override the rule
-- action setting.
--
-- 'name', 'awsWafv2RulesDetails_name' - The name of the rule.
--
-- 'overrideAction', 'awsWafv2RulesDetails_overrideAction' - The action to use in the place of the action that results from the rule
-- group evaluation.
--
-- 'priority', 'awsWafv2RulesDetails_priority' - If you define more than one Rule in a WebACL, WAF evaluates each request
-- against the Rules in order based on the value of @Priority@. WAF
-- processes rules with lower priority first. The priorities don\'t need to
-- be consecutive, but they must all be different.
--
-- 'visibilityConfig', 'awsWafv2RulesDetails_visibilityConfig' - Defines and enables Amazon CloudWatch metrics and web request sample
-- collection.
newAwsWafv2RulesDetails ::
AwsWafv2RulesDetails
newAwsWafv2RulesDetails =
AwsWafv2RulesDetails'
{ action = Prelude.Nothing,
name = Prelude.Nothing,
overrideAction = Prelude.Nothing,
priority = Prelude.Nothing,
visibilityConfig = Prelude.Nothing
}
-- | The action that WAF should take on a web request when it matches the
-- rule statement. Settings at the web ACL level can override the rule
-- action setting.
awsWafv2RulesDetails_action :: Lens.Lens' AwsWafv2RulesDetails (Prelude.Maybe AwsWafv2RulesActionDetails)
awsWafv2RulesDetails_action = Lens.lens (\AwsWafv2RulesDetails' {action} -> action) (\s@AwsWafv2RulesDetails' {} a -> s {action = a} :: AwsWafv2RulesDetails)
-- | The name of the rule.
awsWafv2RulesDetails_name :: Lens.Lens' AwsWafv2RulesDetails (Prelude.Maybe Prelude.Text)
awsWafv2RulesDetails_name = Lens.lens (\AwsWafv2RulesDetails' {name} -> name) (\s@AwsWafv2RulesDetails' {} a -> s {name = a} :: AwsWafv2RulesDetails)
-- | The action to use in the place of the action that results from the rule
-- group evaluation.
awsWafv2RulesDetails_overrideAction :: Lens.Lens' AwsWafv2RulesDetails (Prelude.Maybe Prelude.Text)
awsWafv2RulesDetails_overrideAction = Lens.lens (\AwsWafv2RulesDetails' {overrideAction} -> overrideAction) (\s@AwsWafv2RulesDetails' {} a -> s {overrideAction = a} :: AwsWafv2RulesDetails)
-- | If you define more than one Rule in a WebACL, WAF evaluates each request
-- against the Rules in order based on the value of @Priority@. WAF
-- processes rules with lower priority first. The priorities don\'t need to
-- be consecutive, but they must all be different.
awsWafv2RulesDetails_priority :: Lens.Lens' AwsWafv2RulesDetails (Prelude.Maybe Prelude.Int)
awsWafv2RulesDetails_priority = Lens.lens (\AwsWafv2RulesDetails' {priority} -> priority) (\s@AwsWafv2RulesDetails' {} a -> s {priority = a} :: AwsWafv2RulesDetails)
-- | Defines and enables Amazon CloudWatch metrics and web request sample
-- collection.
awsWafv2RulesDetails_visibilityConfig :: Lens.Lens' AwsWafv2RulesDetails (Prelude.Maybe AwsWafv2VisibilityConfigDetails)
awsWafv2RulesDetails_visibilityConfig = Lens.lens (\AwsWafv2RulesDetails' {visibilityConfig} -> visibilityConfig) (\s@AwsWafv2RulesDetails' {} a -> s {visibilityConfig = a} :: AwsWafv2RulesDetails)
instance Data.FromJSON AwsWafv2RulesDetails where
parseJSON =
Data.withObject
"AwsWafv2RulesDetails"
( \x ->
AwsWafv2RulesDetails'
Prelude.<$> (x Data..:? "Action")
Prelude.<*> (x Data..:? "Name")
Prelude.<*> (x Data..:? "OverrideAction")
Prelude.<*> (x Data..:? "Priority")
Prelude.<*> (x Data..:? "VisibilityConfig")
)
instance Prelude.Hashable AwsWafv2RulesDetails where
hashWithSalt _salt AwsWafv2RulesDetails' {..} =
_salt
`Prelude.hashWithSalt` action
`Prelude.hashWithSalt` name
`Prelude.hashWithSalt` overrideAction
`Prelude.hashWithSalt` priority
`Prelude.hashWithSalt` visibilityConfig
instance Prelude.NFData AwsWafv2RulesDetails where
rnf AwsWafv2RulesDetails' {..} =
Prelude.rnf action
`Prelude.seq` Prelude.rnf name
`Prelude.seq` Prelude.rnf overrideAction
`Prelude.seq` Prelude.rnf priority
`Prelude.seq` Prelude.rnf visibilityConfig
instance Data.ToJSON AwsWafv2RulesDetails where
toJSON AwsWafv2RulesDetails' {..} =
Data.object
( Prelude.catMaybes
[ ("Action" Data..=) Prelude.<$> action,
("Name" Data..=) Prelude.<$> name,
("OverrideAction" Data..=)
Prelude.<$> overrideAction,
("Priority" Data..=) Prelude.<$> priority,
("VisibilityConfig" Data..=)
Prelude.<$> visibilityConfig
]
)