{-# 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 #-}
module Amazonka.WAF.UpdateWebACL
(
UpdateWebACL (..),
newUpdateWebACL,
updateWebACL_defaultAction,
updateWebACL_updates,
updateWebACL_webACLId,
updateWebACL_changeToken,
UpdateWebACLResponse (..),
newUpdateWebACLResponse,
updateWebACLResponse_changeToken,
updateWebACLResponse_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.WAF.Types
data UpdateWebACL = UpdateWebACL'
{
UpdateWebACL -> Maybe WafAction
defaultAction :: Prelude.Maybe WafAction,
UpdateWebACL -> Maybe [WebACLUpdate]
updates :: Prelude.Maybe [WebACLUpdate],
UpdateWebACL -> Text
webACLId :: Prelude.Text,
UpdateWebACL -> Text
changeToken :: Prelude.Text
}
deriving (UpdateWebACL -> UpdateWebACL -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateWebACL -> UpdateWebACL -> Bool
$c/= :: UpdateWebACL -> UpdateWebACL -> Bool
== :: UpdateWebACL -> UpdateWebACL -> Bool
$c== :: UpdateWebACL -> UpdateWebACL -> Bool
Prelude.Eq, ReadPrec [UpdateWebACL]
ReadPrec UpdateWebACL
Int -> ReadS UpdateWebACL
ReadS [UpdateWebACL]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateWebACL]
$creadListPrec :: ReadPrec [UpdateWebACL]
readPrec :: ReadPrec UpdateWebACL
$creadPrec :: ReadPrec UpdateWebACL
readList :: ReadS [UpdateWebACL]
$creadList :: ReadS [UpdateWebACL]
readsPrec :: Int -> ReadS UpdateWebACL
$creadsPrec :: Int -> ReadS UpdateWebACL
Prelude.Read, Int -> UpdateWebACL -> ShowS
[UpdateWebACL] -> ShowS
UpdateWebACL -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateWebACL] -> ShowS
$cshowList :: [UpdateWebACL] -> ShowS
show :: UpdateWebACL -> String
$cshow :: UpdateWebACL -> String
showsPrec :: Int -> UpdateWebACL -> ShowS
$cshowsPrec :: Int -> UpdateWebACL -> ShowS
Prelude.Show, forall x. Rep UpdateWebACL x -> UpdateWebACL
forall x. UpdateWebACL -> Rep UpdateWebACL x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateWebACL x -> UpdateWebACL
$cfrom :: forall x. UpdateWebACL -> Rep UpdateWebACL x
Prelude.Generic)
newUpdateWebACL ::
Prelude.Text ->
Prelude.Text ->
UpdateWebACL
newUpdateWebACL :: Text -> Text -> UpdateWebACL
newUpdateWebACL Text
pWebACLId_ Text
pChangeToken_ =
UpdateWebACL'
{ $sel:defaultAction:UpdateWebACL' :: Maybe WafAction
defaultAction = forall a. Maybe a
Prelude.Nothing,
$sel:updates:UpdateWebACL' :: Maybe [WebACLUpdate]
updates = forall a. Maybe a
Prelude.Nothing,
$sel:webACLId:UpdateWebACL' :: Text
webACLId = Text
pWebACLId_,
$sel:changeToken:UpdateWebACL' :: Text
changeToken = Text
pChangeToken_
}
updateWebACL_defaultAction :: Lens.Lens' UpdateWebACL (Prelude.Maybe WafAction)
updateWebACL_defaultAction :: Lens' UpdateWebACL (Maybe WafAction)
updateWebACL_defaultAction = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateWebACL' {Maybe WafAction
defaultAction :: Maybe WafAction
$sel:defaultAction:UpdateWebACL' :: UpdateWebACL -> Maybe WafAction
defaultAction} -> Maybe WafAction
defaultAction) (\s :: UpdateWebACL
s@UpdateWebACL' {} Maybe WafAction
a -> UpdateWebACL
s {$sel:defaultAction:UpdateWebACL' :: Maybe WafAction
defaultAction = Maybe WafAction
a} :: UpdateWebACL)
updateWebACL_updates :: Lens.Lens' UpdateWebACL (Prelude.Maybe [WebACLUpdate])
updateWebACL_updates :: Lens' UpdateWebACL (Maybe [WebACLUpdate])
updateWebACL_updates = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateWebACL' {Maybe [WebACLUpdate]
updates :: Maybe [WebACLUpdate]
$sel:updates:UpdateWebACL' :: UpdateWebACL -> Maybe [WebACLUpdate]
updates} -> Maybe [WebACLUpdate]
updates) (\s :: UpdateWebACL
s@UpdateWebACL' {} Maybe [WebACLUpdate]
a -> UpdateWebACL
s {$sel:updates:UpdateWebACL' :: Maybe [WebACLUpdate]
updates = Maybe [WebACLUpdate]
a} :: UpdateWebACL) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
updateWebACL_webACLId :: Lens.Lens' UpdateWebACL Prelude.Text
updateWebACL_webACLId :: Lens' UpdateWebACL Text
updateWebACL_webACLId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateWebACL' {Text
webACLId :: Text
$sel:webACLId:UpdateWebACL' :: UpdateWebACL -> Text
webACLId} -> Text
webACLId) (\s :: UpdateWebACL
s@UpdateWebACL' {} Text
a -> UpdateWebACL
s {$sel:webACLId:UpdateWebACL' :: Text
webACLId = Text
a} :: UpdateWebACL)
updateWebACL_changeToken :: Lens.Lens' UpdateWebACL Prelude.Text
updateWebACL_changeToken :: Lens' UpdateWebACL Text
updateWebACL_changeToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateWebACL' {Text
changeToken :: Text
$sel:changeToken:UpdateWebACL' :: UpdateWebACL -> Text
changeToken} -> Text
changeToken) (\s :: UpdateWebACL
s@UpdateWebACL' {} Text
a -> UpdateWebACL
s {$sel:changeToken:UpdateWebACL' :: Text
changeToken = Text
a} :: UpdateWebACL)
instance Core.AWSRequest UpdateWebACL where
type AWSResponse UpdateWebACL = UpdateWebACLResponse
request :: (Service -> Service) -> UpdateWebACL -> Request UpdateWebACL
request Service -> Service
overrides =
forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateWebACL
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse UpdateWebACL)))
response =
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
( \Int
s ResponseHeaders
h Object
x ->
Maybe Text -> Int -> UpdateWebACLResponse
UpdateWebACLResponse'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ChangeToken")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
)
instance Prelude.Hashable UpdateWebACL where
hashWithSalt :: Int -> UpdateWebACL -> Int
hashWithSalt Int
_salt UpdateWebACL' {Maybe [WebACLUpdate]
Maybe WafAction
Text
changeToken :: Text
webACLId :: Text
updates :: Maybe [WebACLUpdate]
defaultAction :: Maybe WafAction
$sel:changeToken:UpdateWebACL' :: UpdateWebACL -> Text
$sel:webACLId:UpdateWebACL' :: UpdateWebACL -> Text
$sel:updates:UpdateWebACL' :: UpdateWebACL -> Maybe [WebACLUpdate]
$sel:defaultAction:UpdateWebACL' :: UpdateWebACL -> Maybe WafAction
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe WafAction
defaultAction
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [WebACLUpdate]
updates
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
webACLId
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
changeToken
instance Prelude.NFData UpdateWebACL where
rnf :: UpdateWebACL -> ()
rnf UpdateWebACL' {Maybe [WebACLUpdate]
Maybe WafAction
Text
changeToken :: Text
webACLId :: Text
updates :: Maybe [WebACLUpdate]
defaultAction :: Maybe WafAction
$sel:changeToken:UpdateWebACL' :: UpdateWebACL -> Text
$sel:webACLId:UpdateWebACL' :: UpdateWebACL -> Text
$sel:updates:UpdateWebACL' :: UpdateWebACL -> Maybe [WebACLUpdate]
$sel:defaultAction:UpdateWebACL' :: UpdateWebACL -> Maybe WafAction
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe WafAction
defaultAction
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [WebACLUpdate]
updates
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
webACLId
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
changeToken
instance Data.ToHeaders UpdateWebACL where
toHeaders :: UpdateWebACL -> ResponseHeaders
toHeaders =
forall a b. a -> b -> a
Prelude.const
( forall a. Monoid a => [a] -> a
Prelude.mconcat
[ HeaderName
"X-Amz-Target"
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AWSWAF_20150824.UpdateWebACL" ::
Prelude.ByteString
),
HeaderName
"Content-Type"
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON UpdateWebACL where
toJSON :: UpdateWebACL -> Value
toJSON UpdateWebACL' {Maybe [WebACLUpdate]
Maybe WafAction
Text
changeToken :: Text
webACLId :: Text
updates :: Maybe [WebACLUpdate]
defaultAction :: Maybe WafAction
$sel:changeToken:UpdateWebACL' :: UpdateWebACL -> Text
$sel:webACLId:UpdateWebACL' :: UpdateWebACL -> Text
$sel:updates:UpdateWebACL' :: UpdateWebACL -> Maybe [WebACLUpdate]
$sel:defaultAction:UpdateWebACL' :: UpdateWebACL -> Maybe WafAction
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"DefaultAction" 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 WafAction
defaultAction,
(Key
"Updates" 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 [WebACLUpdate]
updates,
forall a. a -> Maybe a
Prelude.Just (Key
"WebACLId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
webACLId),
forall a. a -> Maybe a
Prelude.Just (Key
"ChangeToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
changeToken)
]
)
instance Data.ToPath UpdateWebACL where
toPath :: UpdateWebACL -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"
instance Data.ToQuery UpdateWebACL where
toQuery :: UpdateWebACL -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty
data UpdateWebACLResponse = UpdateWebACLResponse'
{
UpdateWebACLResponse -> Maybe Text
changeToken :: Prelude.Maybe Prelude.Text,
UpdateWebACLResponse -> Int
httpStatus :: Prelude.Int
}
deriving (UpdateWebACLResponse -> UpdateWebACLResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateWebACLResponse -> UpdateWebACLResponse -> Bool
$c/= :: UpdateWebACLResponse -> UpdateWebACLResponse -> Bool
== :: UpdateWebACLResponse -> UpdateWebACLResponse -> Bool
$c== :: UpdateWebACLResponse -> UpdateWebACLResponse -> Bool
Prelude.Eq, ReadPrec [UpdateWebACLResponse]
ReadPrec UpdateWebACLResponse
Int -> ReadS UpdateWebACLResponse
ReadS [UpdateWebACLResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateWebACLResponse]
$creadListPrec :: ReadPrec [UpdateWebACLResponse]
readPrec :: ReadPrec UpdateWebACLResponse
$creadPrec :: ReadPrec UpdateWebACLResponse
readList :: ReadS [UpdateWebACLResponse]
$creadList :: ReadS [UpdateWebACLResponse]
readsPrec :: Int -> ReadS UpdateWebACLResponse
$creadsPrec :: Int -> ReadS UpdateWebACLResponse
Prelude.Read, Int -> UpdateWebACLResponse -> ShowS
[UpdateWebACLResponse] -> ShowS
UpdateWebACLResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateWebACLResponse] -> ShowS
$cshowList :: [UpdateWebACLResponse] -> ShowS
show :: UpdateWebACLResponse -> String
$cshow :: UpdateWebACLResponse -> String
showsPrec :: Int -> UpdateWebACLResponse -> ShowS
$cshowsPrec :: Int -> UpdateWebACLResponse -> ShowS
Prelude.Show, forall x. Rep UpdateWebACLResponse x -> UpdateWebACLResponse
forall x. UpdateWebACLResponse -> Rep UpdateWebACLResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateWebACLResponse x -> UpdateWebACLResponse
$cfrom :: forall x. UpdateWebACLResponse -> Rep UpdateWebACLResponse x
Prelude.Generic)
newUpdateWebACLResponse ::
Prelude.Int ->
UpdateWebACLResponse
newUpdateWebACLResponse :: Int -> UpdateWebACLResponse
newUpdateWebACLResponse Int
pHttpStatus_ =
UpdateWebACLResponse'
{ $sel:changeToken:UpdateWebACLResponse' :: Maybe Text
changeToken =
forall a. Maybe a
Prelude.Nothing,
$sel:httpStatus:UpdateWebACLResponse' :: Int
httpStatus = Int
pHttpStatus_
}
updateWebACLResponse_changeToken :: Lens.Lens' UpdateWebACLResponse (Prelude.Maybe Prelude.Text)
updateWebACLResponse_changeToken :: Lens' UpdateWebACLResponse (Maybe Text)
updateWebACLResponse_changeToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateWebACLResponse' {Maybe Text
changeToken :: Maybe Text
$sel:changeToken:UpdateWebACLResponse' :: UpdateWebACLResponse -> Maybe Text
changeToken} -> Maybe Text
changeToken) (\s :: UpdateWebACLResponse
s@UpdateWebACLResponse' {} Maybe Text
a -> UpdateWebACLResponse
s {$sel:changeToken:UpdateWebACLResponse' :: Maybe Text
changeToken = Maybe Text
a} :: UpdateWebACLResponse)
updateWebACLResponse_httpStatus :: Lens.Lens' UpdateWebACLResponse Prelude.Int
updateWebACLResponse_httpStatus :: Lens' UpdateWebACLResponse Int
updateWebACLResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateWebACLResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateWebACLResponse' :: UpdateWebACLResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateWebACLResponse
s@UpdateWebACLResponse' {} Int
a -> UpdateWebACLResponse
s {$sel:httpStatus:UpdateWebACLResponse' :: Int
httpStatus = Int
a} :: UpdateWebACLResponse)
instance Prelude.NFData UpdateWebACLResponse where
rnf :: UpdateWebACLResponse -> ()
rnf UpdateWebACLResponse' {Int
Maybe Text
httpStatus :: Int
changeToken :: Maybe Text
$sel:httpStatus:UpdateWebACLResponse' :: UpdateWebACLResponse -> Int
$sel:changeToken:UpdateWebACLResponse' :: UpdateWebACLResponse -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
changeToken
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus