amazonka-route53resolver-2.0: gen/Amazonka/Route53Resolver/PutFirewallRuleGroupPolicy.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.Route53Resolver.PutFirewallRuleGroupPolicy
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Attaches an Identity and Access Management (Amazon Web Services IAM)
-- policy for sharing the rule group. You can use the policy to share the
-- rule group using Resource Access Manager (RAM).
module Amazonka.Route53Resolver.PutFirewallRuleGroupPolicy
( -- * Creating a Request
PutFirewallRuleGroupPolicy (..),
newPutFirewallRuleGroupPolicy,
-- * Request Lenses
putFirewallRuleGroupPolicy_arn,
putFirewallRuleGroupPolicy_firewallRuleGroupPolicy,
-- * Destructuring the Response
PutFirewallRuleGroupPolicyResponse (..),
newPutFirewallRuleGroupPolicyResponse,
-- * Response Lenses
putFirewallRuleGroupPolicyResponse_returnValue,
putFirewallRuleGroupPolicyResponse_httpStatus,
)
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.Route53Resolver.Types
-- | /See:/ 'newPutFirewallRuleGroupPolicy' smart constructor.
data PutFirewallRuleGroupPolicy = PutFirewallRuleGroupPolicy'
{ -- | The ARN (Amazon Resource Name) for the rule group that you want to
-- share.
arn :: Prelude.Text,
-- | The Identity and Access Management (Amazon Web Services IAM) policy to
-- attach to the rule group.
firewallRuleGroupPolicy :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'PutFirewallRuleGroupPolicy' 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:
--
-- 'arn', 'putFirewallRuleGroupPolicy_arn' - The ARN (Amazon Resource Name) for the rule group that you want to
-- share.
--
-- 'firewallRuleGroupPolicy', 'putFirewallRuleGroupPolicy_firewallRuleGroupPolicy' - The Identity and Access Management (Amazon Web Services IAM) policy to
-- attach to the rule group.
newPutFirewallRuleGroupPolicy ::
-- | 'arn'
Prelude.Text ->
-- | 'firewallRuleGroupPolicy'
Prelude.Text ->
PutFirewallRuleGroupPolicy
newPutFirewallRuleGroupPolicy
pArn_
pFirewallRuleGroupPolicy_ =
PutFirewallRuleGroupPolicy'
{ arn = pArn_,
firewallRuleGroupPolicy =
pFirewallRuleGroupPolicy_
}
-- | The ARN (Amazon Resource Name) for the rule group that you want to
-- share.
putFirewallRuleGroupPolicy_arn :: Lens.Lens' PutFirewallRuleGroupPolicy Prelude.Text
putFirewallRuleGroupPolicy_arn = Lens.lens (\PutFirewallRuleGroupPolicy' {arn} -> arn) (\s@PutFirewallRuleGroupPolicy' {} a -> s {arn = a} :: PutFirewallRuleGroupPolicy)
-- | The Identity and Access Management (Amazon Web Services IAM) policy to
-- attach to the rule group.
putFirewallRuleGroupPolicy_firewallRuleGroupPolicy :: Lens.Lens' PutFirewallRuleGroupPolicy Prelude.Text
putFirewallRuleGroupPolicy_firewallRuleGroupPolicy = Lens.lens (\PutFirewallRuleGroupPolicy' {firewallRuleGroupPolicy} -> firewallRuleGroupPolicy) (\s@PutFirewallRuleGroupPolicy' {} a -> s {firewallRuleGroupPolicy = a} :: PutFirewallRuleGroupPolicy)
instance Core.AWSRequest PutFirewallRuleGroupPolicy where
type
AWSResponse PutFirewallRuleGroupPolicy =
PutFirewallRuleGroupPolicyResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
PutFirewallRuleGroupPolicyResponse'
Prelude.<$> (x Data..?> "ReturnValue")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable PutFirewallRuleGroupPolicy where
hashWithSalt _salt PutFirewallRuleGroupPolicy' {..} =
_salt
`Prelude.hashWithSalt` arn
`Prelude.hashWithSalt` firewallRuleGroupPolicy
instance Prelude.NFData PutFirewallRuleGroupPolicy where
rnf PutFirewallRuleGroupPolicy' {..} =
Prelude.rnf arn
`Prelude.seq` Prelude.rnf firewallRuleGroupPolicy
instance Data.ToHeaders PutFirewallRuleGroupPolicy where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "X-Amz-Target"
Data.=# ( "Route53Resolver.PutFirewallRuleGroupPolicy" ::
Prelude.ByteString
),
"Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON PutFirewallRuleGroupPolicy where
toJSON PutFirewallRuleGroupPolicy' {..} =
Data.object
( Prelude.catMaybes
[ Prelude.Just ("Arn" Data..= arn),
Prelude.Just
( "FirewallRuleGroupPolicy"
Data..= firewallRuleGroupPolicy
)
]
)
instance Data.ToPath PutFirewallRuleGroupPolicy where
toPath = Prelude.const "/"
instance Data.ToQuery PutFirewallRuleGroupPolicy where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newPutFirewallRuleGroupPolicyResponse' smart constructor.
data PutFirewallRuleGroupPolicyResponse = PutFirewallRuleGroupPolicyResponse'
{ returnValue :: Prelude.Maybe Prelude.Bool,
-- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'PutFirewallRuleGroupPolicyResponse' 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:
--
-- 'returnValue', 'putFirewallRuleGroupPolicyResponse_returnValue' -
--
-- 'httpStatus', 'putFirewallRuleGroupPolicyResponse_httpStatus' - The response's http status code.
newPutFirewallRuleGroupPolicyResponse ::
-- | 'httpStatus'
Prelude.Int ->
PutFirewallRuleGroupPolicyResponse
newPutFirewallRuleGroupPolicyResponse pHttpStatus_ =
PutFirewallRuleGroupPolicyResponse'
{ returnValue =
Prelude.Nothing,
httpStatus = pHttpStatus_
}
putFirewallRuleGroupPolicyResponse_returnValue :: Lens.Lens' PutFirewallRuleGroupPolicyResponse (Prelude.Maybe Prelude.Bool)
putFirewallRuleGroupPolicyResponse_returnValue = Lens.lens (\PutFirewallRuleGroupPolicyResponse' {returnValue} -> returnValue) (\s@PutFirewallRuleGroupPolicyResponse' {} a -> s {returnValue = a} :: PutFirewallRuleGroupPolicyResponse)
-- | The response's http status code.
putFirewallRuleGroupPolicyResponse_httpStatus :: Lens.Lens' PutFirewallRuleGroupPolicyResponse Prelude.Int
putFirewallRuleGroupPolicyResponse_httpStatus = Lens.lens (\PutFirewallRuleGroupPolicyResponse' {httpStatus} -> httpStatus) (\s@PutFirewallRuleGroupPolicyResponse' {} a -> s {httpStatus = a} :: PutFirewallRuleGroupPolicyResponse)
instance
Prelude.NFData
PutFirewallRuleGroupPolicyResponse
where
rnf PutFirewallRuleGroupPolicyResponse' {..} =
Prelude.rnf returnValue
`Prelude.seq` Prelude.rnf httpStatus