{-# 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.MacieV2.Types.S3JobDefinition where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MacieV2.Types.S3BucketCriteriaForJob
import Amazonka.MacieV2.Types.S3BucketDefinitionForJob
import Amazonka.MacieV2.Types.Scoping
import qualified Amazonka.Prelude as Prelude
data S3JobDefinition = S3JobDefinition'
{
S3JobDefinition -> Maybe S3BucketCriteriaForJob
bucketCriteria :: Prelude.Maybe S3BucketCriteriaForJob,
S3JobDefinition -> Maybe [S3BucketDefinitionForJob]
bucketDefinitions :: Prelude.Maybe [S3BucketDefinitionForJob],
S3JobDefinition -> Maybe Scoping
scoping :: Prelude.Maybe Scoping
}
deriving (S3JobDefinition -> S3JobDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: S3JobDefinition -> S3JobDefinition -> Bool
$c/= :: S3JobDefinition -> S3JobDefinition -> Bool
== :: S3JobDefinition -> S3JobDefinition -> Bool
$c== :: S3JobDefinition -> S3JobDefinition -> Bool
Prelude.Eq, ReadPrec [S3JobDefinition]
ReadPrec S3JobDefinition
Int -> ReadS S3JobDefinition
ReadS [S3JobDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [S3JobDefinition]
$creadListPrec :: ReadPrec [S3JobDefinition]
readPrec :: ReadPrec S3JobDefinition
$creadPrec :: ReadPrec S3JobDefinition
readList :: ReadS [S3JobDefinition]
$creadList :: ReadS [S3JobDefinition]
readsPrec :: Int -> ReadS S3JobDefinition
$creadsPrec :: Int -> ReadS S3JobDefinition
Prelude.Read, Int -> S3JobDefinition -> ShowS
[S3JobDefinition] -> ShowS
S3JobDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [S3JobDefinition] -> ShowS
$cshowList :: [S3JobDefinition] -> ShowS
show :: S3JobDefinition -> String
$cshow :: S3JobDefinition -> String
showsPrec :: Int -> S3JobDefinition -> ShowS
$cshowsPrec :: Int -> S3JobDefinition -> ShowS
Prelude.Show, forall x. Rep S3JobDefinition x -> S3JobDefinition
forall x. S3JobDefinition -> Rep S3JobDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep S3JobDefinition x -> S3JobDefinition
$cfrom :: forall x. S3JobDefinition -> Rep S3JobDefinition x
Prelude.Generic)
newS3JobDefinition ::
S3JobDefinition
newS3JobDefinition :: S3JobDefinition
newS3JobDefinition =
S3JobDefinition'
{ $sel:bucketCriteria:S3JobDefinition' :: Maybe S3BucketCriteriaForJob
bucketCriteria = forall a. Maybe a
Prelude.Nothing,
$sel:bucketDefinitions:S3JobDefinition' :: Maybe [S3BucketDefinitionForJob]
bucketDefinitions = forall a. Maybe a
Prelude.Nothing,
$sel:scoping:S3JobDefinition' :: Maybe Scoping
scoping = forall a. Maybe a
Prelude.Nothing
}
s3JobDefinition_bucketCriteria :: Lens.Lens' S3JobDefinition (Prelude.Maybe S3BucketCriteriaForJob)
s3JobDefinition_bucketCriteria :: Lens' S3JobDefinition (Maybe S3BucketCriteriaForJob)
s3JobDefinition_bucketCriteria = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3JobDefinition' {Maybe S3BucketCriteriaForJob
bucketCriteria :: Maybe S3BucketCriteriaForJob
$sel:bucketCriteria:S3JobDefinition' :: S3JobDefinition -> Maybe S3BucketCriteriaForJob
bucketCriteria} -> Maybe S3BucketCriteriaForJob
bucketCriteria) (\s :: S3JobDefinition
s@S3JobDefinition' {} Maybe S3BucketCriteriaForJob
a -> S3JobDefinition
s {$sel:bucketCriteria:S3JobDefinition' :: Maybe S3BucketCriteriaForJob
bucketCriteria = Maybe S3BucketCriteriaForJob
a} :: S3JobDefinition)
s3JobDefinition_bucketDefinitions :: Lens.Lens' S3JobDefinition (Prelude.Maybe [S3BucketDefinitionForJob])
s3JobDefinition_bucketDefinitions :: Lens' S3JobDefinition (Maybe [S3BucketDefinitionForJob])
s3JobDefinition_bucketDefinitions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3JobDefinition' {Maybe [S3BucketDefinitionForJob]
bucketDefinitions :: Maybe [S3BucketDefinitionForJob]
$sel:bucketDefinitions:S3JobDefinition' :: S3JobDefinition -> Maybe [S3BucketDefinitionForJob]
bucketDefinitions} -> Maybe [S3BucketDefinitionForJob]
bucketDefinitions) (\s :: S3JobDefinition
s@S3JobDefinition' {} Maybe [S3BucketDefinitionForJob]
a -> S3JobDefinition
s {$sel:bucketDefinitions:S3JobDefinition' :: Maybe [S3BucketDefinitionForJob]
bucketDefinitions = Maybe [S3BucketDefinitionForJob]
a} :: S3JobDefinition) 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
s3JobDefinition_scoping :: Lens.Lens' S3JobDefinition (Prelude.Maybe Scoping)
s3JobDefinition_scoping :: Lens' S3JobDefinition (Maybe Scoping)
s3JobDefinition_scoping = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3JobDefinition' {Maybe Scoping
scoping :: Maybe Scoping
$sel:scoping:S3JobDefinition' :: S3JobDefinition -> Maybe Scoping
scoping} -> Maybe Scoping
scoping) (\s :: S3JobDefinition
s@S3JobDefinition' {} Maybe Scoping
a -> S3JobDefinition
s {$sel:scoping:S3JobDefinition' :: Maybe Scoping
scoping = Maybe Scoping
a} :: S3JobDefinition)
instance Data.FromJSON S3JobDefinition where
parseJSON :: Value -> Parser S3JobDefinition
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"S3JobDefinition"
( \Object
x ->
Maybe S3BucketCriteriaForJob
-> Maybe [S3BucketDefinitionForJob]
-> Maybe Scoping
-> S3JobDefinition
S3JobDefinition'
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
"bucketCriteria")
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
"bucketDefinitions"
forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
)
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
"scoping")
)
instance Prelude.Hashable S3JobDefinition where
hashWithSalt :: Int -> S3JobDefinition -> Int
hashWithSalt Int
_salt S3JobDefinition' {Maybe [S3BucketDefinitionForJob]
Maybe S3BucketCriteriaForJob
Maybe Scoping
scoping :: Maybe Scoping
bucketDefinitions :: Maybe [S3BucketDefinitionForJob]
bucketCriteria :: Maybe S3BucketCriteriaForJob
$sel:scoping:S3JobDefinition' :: S3JobDefinition -> Maybe Scoping
$sel:bucketDefinitions:S3JobDefinition' :: S3JobDefinition -> Maybe [S3BucketDefinitionForJob]
$sel:bucketCriteria:S3JobDefinition' :: S3JobDefinition -> Maybe S3BucketCriteriaForJob
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe S3BucketCriteriaForJob
bucketCriteria
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [S3BucketDefinitionForJob]
bucketDefinitions
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Scoping
scoping
instance Prelude.NFData S3JobDefinition where
rnf :: S3JobDefinition -> ()
rnf S3JobDefinition' {Maybe [S3BucketDefinitionForJob]
Maybe S3BucketCriteriaForJob
Maybe Scoping
scoping :: Maybe Scoping
bucketDefinitions :: Maybe [S3BucketDefinitionForJob]
bucketCriteria :: Maybe S3BucketCriteriaForJob
$sel:scoping:S3JobDefinition' :: S3JobDefinition -> Maybe Scoping
$sel:bucketDefinitions:S3JobDefinition' :: S3JobDefinition -> Maybe [S3BucketDefinitionForJob]
$sel:bucketCriteria:S3JobDefinition' :: S3JobDefinition -> Maybe S3BucketCriteriaForJob
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe S3BucketCriteriaForJob
bucketCriteria
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [S3BucketDefinitionForJob]
bucketDefinitions
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Scoping
scoping
instance Data.ToJSON S3JobDefinition where
toJSON :: S3JobDefinition -> Value
toJSON S3JobDefinition' {Maybe [S3BucketDefinitionForJob]
Maybe S3BucketCriteriaForJob
Maybe Scoping
scoping :: Maybe Scoping
bucketDefinitions :: Maybe [S3BucketDefinitionForJob]
bucketCriteria :: Maybe S3BucketCriteriaForJob
$sel:scoping:S3JobDefinition' :: S3JobDefinition -> Maybe Scoping
$sel:bucketDefinitions:S3JobDefinition' :: S3JobDefinition -> Maybe [S3BucketDefinitionForJob]
$sel:bucketCriteria:S3JobDefinition' :: S3JobDefinition -> Maybe S3BucketCriteriaForJob
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"bucketCriteria" 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 S3BucketCriteriaForJob
bucketCriteria,
(Key
"bucketDefinitions" 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 [S3BucketDefinitionForJob]
bucketDefinitions,
(Key
"scoping" 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 Scoping
scoping
]
)