{-# 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.Inspector2.CreateFilter
(
CreateFilter (..),
newCreateFilter,
createFilter_description,
createFilter_reason,
createFilter_tags,
createFilter_action,
createFilter_filterCriteria,
createFilter_name,
CreateFilterResponse (..),
newCreateFilterResponse,
createFilterResponse_httpStatus,
createFilterResponse_arn,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Inspector2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
data CreateFilter = CreateFilter'
{
CreateFilter -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
CreateFilter -> Maybe Text
reason :: Prelude.Maybe Prelude.Text,
CreateFilter -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
CreateFilter -> FilterAction
action :: FilterAction,
CreateFilter -> FilterCriteria
filterCriteria :: FilterCriteria,
CreateFilter -> Text
name :: Prelude.Text
}
deriving (CreateFilter -> CreateFilter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateFilter -> CreateFilter -> Bool
$c/= :: CreateFilter -> CreateFilter -> Bool
== :: CreateFilter -> CreateFilter -> Bool
$c== :: CreateFilter -> CreateFilter -> Bool
Prelude.Eq, ReadPrec [CreateFilter]
ReadPrec CreateFilter
Int -> ReadS CreateFilter
ReadS [CreateFilter]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateFilter]
$creadListPrec :: ReadPrec [CreateFilter]
readPrec :: ReadPrec CreateFilter
$creadPrec :: ReadPrec CreateFilter
readList :: ReadS [CreateFilter]
$creadList :: ReadS [CreateFilter]
readsPrec :: Int -> ReadS CreateFilter
$creadsPrec :: Int -> ReadS CreateFilter
Prelude.Read, Int -> CreateFilter -> ShowS
[CreateFilter] -> ShowS
CreateFilter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateFilter] -> ShowS
$cshowList :: [CreateFilter] -> ShowS
show :: CreateFilter -> String
$cshow :: CreateFilter -> String
showsPrec :: Int -> CreateFilter -> ShowS
$cshowsPrec :: Int -> CreateFilter -> ShowS
Prelude.Show, forall x. Rep CreateFilter x -> CreateFilter
forall x. CreateFilter -> Rep CreateFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateFilter x -> CreateFilter
$cfrom :: forall x. CreateFilter -> Rep CreateFilter x
Prelude.Generic)
newCreateFilter ::
FilterAction ->
FilterCriteria ->
Prelude.Text ->
CreateFilter
newCreateFilter :: FilterAction -> FilterCriteria -> Text -> CreateFilter
newCreateFilter FilterAction
pAction_ FilterCriteria
pFilterCriteria_ Text
pName_ =
CreateFilter'
{ $sel:description:CreateFilter' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
$sel:reason:CreateFilter' :: Maybe Text
reason = forall a. Maybe a
Prelude.Nothing,
$sel:tags:CreateFilter' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
$sel:action:CreateFilter' :: FilterAction
action = FilterAction
pAction_,
$sel:filterCriteria:CreateFilter' :: FilterCriteria
filterCriteria = FilterCriteria
pFilterCriteria_,
$sel:name:CreateFilter' :: Text
name = Text
pName_
}
createFilter_description :: Lens.Lens' CreateFilter (Prelude.Maybe Prelude.Text)
createFilter_description :: Lens' CreateFilter (Maybe Text)
createFilter_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFilter' {Maybe Text
description :: Maybe Text
$sel:description:CreateFilter' :: CreateFilter -> Maybe Text
description} -> Maybe Text
description) (\s :: CreateFilter
s@CreateFilter' {} Maybe Text
a -> CreateFilter
s {$sel:description:CreateFilter' :: Maybe Text
description = Maybe Text
a} :: CreateFilter)
createFilter_reason :: Lens.Lens' CreateFilter (Prelude.Maybe Prelude.Text)
createFilter_reason :: Lens' CreateFilter (Maybe Text)
createFilter_reason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFilter' {Maybe Text
reason :: Maybe Text
$sel:reason:CreateFilter' :: CreateFilter -> Maybe Text
reason} -> Maybe Text
reason) (\s :: CreateFilter
s@CreateFilter' {} Maybe Text
a -> CreateFilter
s {$sel:reason:CreateFilter' :: Maybe Text
reason = Maybe Text
a} :: CreateFilter)
createFilter_tags :: Lens.Lens' CreateFilter (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createFilter_tags :: Lens' CreateFilter (Maybe (HashMap Text Text))
createFilter_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFilter' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateFilter' :: CreateFilter -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateFilter
s@CreateFilter' {} Maybe (HashMap Text Text)
a -> CreateFilter
s {$sel:tags:CreateFilter' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateFilter) 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
createFilter_action :: Lens.Lens' CreateFilter FilterAction
createFilter_action :: Lens' CreateFilter FilterAction
createFilter_action = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFilter' {FilterAction
action :: FilterAction
$sel:action:CreateFilter' :: CreateFilter -> FilterAction
action} -> FilterAction
action) (\s :: CreateFilter
s@CreateFilter' {} FilterAction
a -> CreateFilter
s {$sel:action:CreateFilter' :: FilterAction
action = FilterAction
a} :: CreateFilter)
createFilter_filterCriteria :: Lens.Lens' CreateFilter FilterCriteria
createFilter_filterCriteria :: Lens' CreateFilter FilterCriteria
createFilter_filterCriteria = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFilter' {FilterCriteria
filterCriteria :: FilterCriteria
$sel:filterCriteria:CreateFilter' :: CreateFilter -> FilterCriteria
filterCriteria} -> FilterCriteria
filterCriteria) (\s :: CreateFilter
s@CreateFilter' {} FilterCriteria
a -> CreateFilter
s {$sel:filterCriteria:CreateFilter' :: FilterCriteria
filterCriteria = FilterCriteria
a} :: CreateFilter)
createFilter_name :: Lens.Lens' CreateFilter Prelude.Text
createFilter_name :: Lens' CreateFilter Text
createFilter_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFilter' {Text
name :: Text
$sel:name:CreateFilter' :: CreateFilter -> Text
name} -> Text
name) (\s :: CreateFilter
s@CreateFilter' {} Text
a -> CreateFilter
s {$sel:name:CreateFilter' :: Text
name = Text
a} :: CreateFilter)
instance Core.AWSRequest CreateFilter where
type AWSResponse CreateFilter = CreateFilterResponse
request :: (Service -> Service) -> CreateFilter -> Request CreateFilter
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 CreateFilter
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateFilter)))
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 ->
Int -> Text -> CreateFilterResponse
CreateFilterResponse'
forall (f :: * -> *) a b. Functor 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))
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"arn")
)
instance Prelude.Hashable CreateFilter where
hashWithSalt :: Int -> CreateFilter -> Int
hashWithSalt Int
_salt CreateFilter' {Maybe Text
Maybe (HashMap Text Text)
Text
FilterAction
FilterCriteria
name :: Text
filterCriteria :: FilterCriteria
action :: FilterAction
tags :: Maybe (HashMap Text Text)
reason :: Maybe Text
description :: Maybe Text
$sel:name:CreateFilter' :: CreateFilter -> Text
$sel:filterCriteria:CreateFilter' :: CreateFilter -> FilterCriteria
$sel:action:CreateFilter' :: CreateFilter -> FilterAction
$sel:tags:CreateFilter' :: CreateFilter -> Maybe (HashMap Text Text)
$sel:reason:CreateFilter' :: CreateFilter -> Maybe Text
$sel:description:CreateFilter' :: CreateFilter -> Maybe Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reason
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` FilterAction
action
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` FilterCriteria
filterCriteria
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
instance Prelude.NFData CreateFilter where
rnf :: CreateFilter -> ()
rnf CreateFilter' {Maybe Text
Maybe (HashMap Text Text)
Text
FilterAction
FilterCriteria
name :: Text
filterCriteria :: FilterCriteria
action :: FilterAction
tags :: Maybe (HashMap Text Text)
reason :: Maybe Text
description :: Maybe Text
$sel:name:CreateFilter' :: CreateFilter -> Text
$sel:filterCriteria:CreateFilter' :: CreateFilter -> FilterCriteria
$sel:action:CreateFilter' :: CreateFilter -> FilterAction
$sel:tags:CreateFilter' :: CreateFilter -> Maybe (HashMap Text Text)
$sel:reason:CreateFilter' :: CreateFilter -> Maybe Text
$sel:description:CreateFilter' :: CreateFilter -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reason
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf FilterAction
action
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf FilterCriteria
filterCriteria
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
instance Data.ToHeaders CreateFilter where
toHeaders :: CreateFilter -> ResponseHeaders
toHeaders =
forall a b. a -> b -> a
Prelude.const
( forall a. Monoid a => [a] -> a
Prelude.mconcat
[ HeaderName
"Content-Type"
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON CreateFilter where
toJSON :: CreateFilter -> Value
toJSON CreateFilter' {Maybe Text
Maybe (HashMap Text Text)
Text
FilterAction
FilterCriteria
name :: Text
filterCriteria :: FilterCriteria
action :: FilterAction
tags :: Maybe (HashMap Text Text)
reason :: Maybe Text
description :: Maybe Text
$sel:name:CreateFilter' :: CreateFilter -> Text
$sel:filterCriteria:CreateFilter' :: CreateFilter -> FilterCriteria
$sel:action:CreateFilter' :: CreateFilter -> FilterAction
$sel:tags:CreateFilter' :: CreateFilter -> Maybe (HashMap Text Text)
$sel:reason:CreateFilter' :: CreateFilter -> Maybe Text
$sel:description:CreateFilter' :: CreateFilter -> Maybe Text
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"description" 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 Text
description,
(Key
"reason" 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 Text
reason,
(Key
"tags" 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 (HashMap Text Text)
tags,
forall a. a -> Maybe a
Prelude.Just (Key
"action" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= FilterAction
action),
forall a. a -> Maybe a
Prelude.Just
(Key
"filterCriteria" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= FilterCriteria
filterCriteria),
forall a. a -> Maybe a
Prelude.Just (Key
"name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name)
]
)
instance Data.ToPath CreateFilter where
toPath :: CreateFilter -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/filters/create"
instance Data.ToQuery CreateFilter where
toQuery :: CreateFilter -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty
data CreateFilterResponse = CreateFilterResponse'
{
CreateFilterResponse -> Int
httpStatus :: Prelude.Int,
CreateFilterResponse -> Text
arn :: Prelude.Text
}
deriving (CreateFilterResponse -> CreateFilterResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateFilterResponse -> CreateFilterResponse -> Bool
$c/= :: CreateFilterResponse -> CreateFilterResponse -> Bool
== :: CreateFilterResponse -> CreateFilterResponse -> Bool
$c== :: CreateFilterResponse -> CreateFilterResponse -> Bool
Prelude.Eq, ReadPrec [CreateFilterResponse]
ReadPrec CreateFilterResponse
Int -> ReadS CreateFilterResponse
ReadS [CreateFilterResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateFilterResponse]
$creadListPrec :: ReadPrec [CreateFilterResponse]
readPrec :: ReadPrec CreateFilterResponse
$creadPrec :: ReadPrec CreateFilterResponse
readList :: ReadS [CreateFilterResponse]
$creadList :: ReadS [CreateFilterResponse]
readsPrec :: Int -> ReadS CreateFilterResponse
$creadsPrec :: Int -> ReadS CreateFilterResponse
Prelude.Read, Int -> CreateFilterResponse -> ShowS
[CreateFilterResponse] -> ShowS
CreateFilterResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateFilterResponse] -> ShowS
$cshowList :: [CreateFilterResponse] -> ShowS
show :: CreateFilterResponse -> String
$cshow :: CreateFilterResponse -> String
showsPrec :: Int -> CreateFilterResponse -> ShowS
$cshowsPrec :: Int -> CreateFilterResponse -> ShowS
Prelude.Show, forall x. Rep CreateFilterResponse x -> CreateFilterResponse
forall x. CreateFilterResponse -> Rep CreateFilterResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateFilterResponse x -> CreateFilterResponse
$cfrom :: forall x. CreateFilterResponse -> Rep CreateFilterResponse x
Prelude.Generic)
newCreateFilterResponse ::
Prelude.Int ->
Prelude.Text ->
CreateFilterResponse
newCreateFilterResponse :: Int -> Text -> CreateFilterResponse
newCreateFilterResponse Int
pHttpStatus_ Text
pArn_ =
CreateFilterResponse'
{ $sel:httpStatus:CreateFilterResponse' :: Int
httpStatus = Int
pHttpStatus_,
$sel:arn:CreateFilterResponse' :: Text
arn = Text
pArn_
}
createFilterResponse_httpStatus :: Lens.Lens' CreateFilterResponse Prelude.Int
createFilterResponse_httpStatus :: Lens' CreateFilterResponse Int
createFilterResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFilterResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateFilterResponse' :: CreateFilterResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateFilterResponse
s@CreateFilterResponse' {} Int
a -> CreateFilterResponse
s {$sel:httpStatus:CreateFilterResponse' :: Int
httpStatus = Int
a} :: CreateFilterResponse)
createFilterResponse_arn :: Lens.Lens' CreateFilterResponse Prelude.Text
createFilterResponse_arn :: Lens' CreateFilterResponse Text
createFilterResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFilterResponse' {Text
arn :: Text
$sel:arn:CreateFilterResponse' :: CreateFilterResponse -> Text
arn} -> Text
arn) (\s :: CreateFilterResponse
s@CreateFilterResponse' {} Text
a -> CreateFilterResponse
s {$sel:arn:CreateFilterResponse' :: Text
arn = Text
a} :: CreateFilterResponse)
instance Prelude.NFData CreateFilterResponse where
rnf :: CreateFilterResponse -> ()
rnf CreateFilterResponse' {Int
Text
arn :: Text
httpStatus :: Int
$sel:arn:CreateFilterResponse' :: CreateFilterResponse -> Text
$sel:httpStatus:CreateFilterResponse' :: CreateFilterResponse -> Int
..} =
forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
arn