{-# 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.S3Object 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.KeyValuePair
import Amazonka.MacieV2.Types.ServerSideEncryption
import Amazonka.MacieV2.Types.StorageClass
import qualified Amazonka.Prelude as Prelude
data S3Object = S3Object'
{
S3Object -> Maybe Text
bucketArn :: Prelude.Maybe Prelude.Text,
S3Object -> Maybe Text
eTag :: Prelude.Maybe Prelude.Text,
S3Object -> Maybe Text
extension :: Prelude.Maybe Prelude.Text,
S3Object -> Maybe Text
key :: Prelude.Maybe Prelude.Text,
S3Object -> Maybe ISO8601
lastModified :: Prelude.Maybe Data.ISO8601,
S3Object -> Maybe Text
path :: Prelude.Maybe Prelude.Text,
S3Object -> Maybe Bool
publicAccess :: Prelude.Maybe Prelude.Bool,
S3Object -> Maybe ServerSideEncryption
serverSideEncryption :: Prelude.Maybe ServerSideEncryption,
S3Object -> Maybe Integer
size :: Prelude.Maybe Prelude.Integer,
S3Object -> Maybe StorageClass
storageClass :: Prelude.Maybe StorageClass,
S3Object -> Maybe [KeyValuePair]
tags :: Prelude.Maybe [KeyValuePair],
S3Object -> Maybe Text
versionId :: Prelude.Maybe Prelude.Text
}
deriving (S3Object -> S3Object -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: S3Object -> S3Object -> Bool
$c/= :: S3Object -> S3Object -> Bool
== :: S3Object -> S3Object -> Bool
$c== :: S3Object -> S3Object -> Bool
Prelude.Eq, ReadPrec [S3Object]
ReadPrec S3Object
Int -> ReadS S3Object
ReadS [S3Object]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [S3Object]
$creadListPrec :: ReadPrec [S3Object]
readPrec :: ReadPrec S3Object
$creadPrec :: ReadPrec S3Object
readList :: ReadS [S3Object]
$creadList :: ReadS [S3Object]
readsPrec :: Int -> ReadS S3Object
$creadsPrec :: Int -> ReadS S3Object
Prelude.Read, Int -> S3Object -> ShowS
[S3Object] -> ShowS
S3Object -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [S3Object] -> ShowS
$cshowList :: [S3Object] -> ShowS
show :: S3Object -> String
$cshow :: S3Object -> String
showsPrec :: Int -> S3Object -> ShowS
$cshowsPrec :: Int -> S3Object -> ShowS
Prelude.Show, forall x. Rep S3Object x -> S3Object
forall x. S3Object -> Rep S3Object x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep S3Object x -> S3Object
$cfrom :: forall x. S3Object -> Rep S3Object x
Prelude.Generic)
newS3Object ::
S3Object
newS3Object :: S3Object
newS3Object =
S3Object'
{ $sel:bucketArn:S3Object' :: Maybe Text
bucketArn = forall a. Maybe a
Prelude.Nothing,
$sel:eTag:S3Object' :: Maybe Text
eTag = forall a. Maybe a
Prelude.Nothing,
$sel:extension:S3Object' :: Maybe Text
extension = forall a. Maybe a
Prelude.Nothing,
$sel:key:S3Object' :: Maybe Text
key = forall a. Maybe a
Prelude.Nothing,
$sel:lastModified:S3Object' :: Maybe ISO8601
lastModified = forall a. Maybe a
Prelude.Nothing,
$sel:path:S3Object' :: Maybe Text
path = forall a. Maybe a
Prelude.Nothing,
$sel:publicAccess:S3Object' :: Maybe Bool
publicAccess = forall a. Maybe a
Prelude.Nothing,
$sel:serverSideEncryption:S3Object' :: Maybe ServerSideEncryption
serverSideEncryption = forall a. Maybe a
Prelude.Nothing,
$sel:size:S3Object' :: Maybe Integer
size = forall a. Maybe a
Prelude.Nothing,
$sel:storageClass:S3Object' :: Maybe StorageClass
storageClass = forall a. Maybe a
Prelude.Nothing,
$sel:tags:S3Object' :: Maybe [KeyValuePair]
tags = forall a. Maybe a
Prelude.Nothing,
$sel:versionId:S3Object' :: Maybe Text
versionId = forall a. Maybe a
Prelude.Nothing
}
s3Object_bucketArn :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)
s3Object_bucketArn :: Lens' S3Object (Maybe Text)
s3Object_bucketArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe Text
bucketArn :: Maybe Text
$sel:bucketArn:S3Object' :: S3Object -> Maybe Text
bucketArn} -> Maybe Text
bucketArn) (\s :: S3Object
s@S3Object' {} Maybe Text
a -> S3Object
s {$sel:bucketArn:S3Object' :: Maybe Text
bucketArn = Maybe Text
a} :: S3Object)
s3Object_eTag :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)
s3Object_eTag :: Lens' S3Object (Maybe Text)
s3Object_eTag = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe Text
eTag :: Maybe Text
$sel:eTag:S3Object' :: S3Object -> Maybe Text
eTag} -> Maybe Text
eTag) (\s :: S3Object
s@S3Object' {} Maybe Text
a -> S3Object
s {$sel:eTag:S3Object' :: Maybe Text
eTag = Maybe Text
a} :: S3Object)
s3Object_extension :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)
s3Object_extension :: Lens' S3Object (Maybe Text)
s3Object_extension = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe Text
extension :: Maybe Text
$sel:extension:S3Object' :: S3Object -> Maybe Text
extension} -> Maybe Text
extension) (\s :: S3Object
s@S3Object' {} Maybe Text
a -> S3Object
s {$sel:extension:S3Object' :: Maybe Text
extension = Maybe Text
a} :: S3Object)
s3Object_key :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)
s3Object_key :: Lens' S3Object (Maybe Text)
s3Object_key = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe Text
key :: Maybe Text
$sel:key:S3Object' :: S3Object -> Maybe Text
key} -> Maybe Text
key) (\s :: S3Object
s@S3Object' {} Maybe Text
a -> S3Object
s {$sel:key:S3Object' :: Maybe Text
key = Maybe Text
a} :: S3Object)
s3Object_lastModified :: Lens.Lens' S3Object (Prelude.Maybe Prelude.UTCTime)
s3Object_lastModified :: Lens' S3Object (Maybe UTCTime)
s3Object_lastModified = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe ISO8601
lastModified :: Maybe ISO8601
$sel:lastModified:S3Object' :: S3Object -> Maybe ISO8601
lastModified} -> Maybe ISO8601
lastModified) (\s :: S3Object
s@S3Object' {} Maybe ISO8601
a -> S3Object
s {$sel:lastModified:S3Object' :: Maybe ISO8601
lastModified = Maybe ISO8601
a} :: S3Object) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time
s3Object_path :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)
s3Object_path :: Lens' S3Object (Maybe Text)
s3Object_path = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe Text
path :: Maybe Text
$sel:path:S3Object' :: S3Object -> Maybe Text
path} -> Maybe Text
path) (\s :: S3Object
s@S3Object' {} Maybe Text
a -> S3Object
s {$sel:path:S3Object' :: Maybe Text
path = Maybe Text
a} :: S3Object)
s3Object_publicAccess :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Bool)
s3Object_publicAccess :: Lens' S3Object (Maybe Bool)
s3Object_publicAccess = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe Bool
publicAccess :: Maybe Bool
$sel:publicAccess:S3Object' :: S3Object -> Maybe Bool
publicAccess} -> Maybe Bool
publicAccess) (\s :: S3Object
s@S3Object' {} Maybe Bool
a -> S3Object
s {$sel:publicAccess:S3Object' :: Maybe Bool
publicAccess = Maybe Bool
a} :: S3Object)
s3Object_serverSideEncryption :: Lens.Lens' S3Object (Prelude.Maybe ServerSideEncryption)
s3Object_serverSideEncryption :: Lens' S3Object (Maybe ServerSideEncryption)
s3Object_serverSideEncryption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe ServerSideEncryption
serverSideEncryption :: Maybe ServerSideEncryption
$sel:serverSideEncryption:S3Object' :: S3Object -> Maybe ServerSideEncryption
serverSideEncryption} -> Maybe ServerSideEncryption
serverSideEncryption) (\s :: S3Object
s@S3Object' {} Maybe ServerSideEncryption
a -> S3Object
s {$sel:serverSideEncryption:S3Object' :: Maybe ServerSideEncryption
serverSideEncryption = Maybe ServerSideEncryption
a} :: S3Object)
s3Object_size :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Integer)
s3Object_size :: Lens' S3Object (Maybe Integer)
s3Object_size = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe Integer
size :: Maybe Integer
$sel:size:S3Object' :: S3Object -> Maybe Integer
size} -> Maybe Integer
size) (\s :: S3Object
s@S3Object' {} Maybe Integer
a -> S3Object
s {$sel:size:S3Object' :: Maybe Integer
size = Maybe Integer
a} :: S3Object)
s3Object_storageClass :: Lens.Lens' S3Object (Prelude.Maybe StorageClass)
s3Object_storageClass :: Lens' S3Object (Maybe StorageClass)
s3Object_storageClass = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe StorageClass
storageClass :: Maybe StorageClass
$sel:storageClass:S3Object' :: S3Object -> Maybe StorageClass
storageClass} -> Maybe StorageClass
storageClass) (\s :: S3Object
s@S3Object' {} Maybe StorageClass
a -> S3Object
s {$sel:storageClass:S3Object' :: Maybe StorageClass
storageClass = Maybe StorageClass
a} :: S3Object)
s3Object_tags :: Lens.Lens' S3Object (Prelude.Maybe [KeyValuePair])
s3Object_tags :: Lens' S3Object (Maybe [KeyValuePair])
s3Object_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe [KeyValuePair]
tags :: Maybe [KeyValuePair]
$sel:tags:S3Object' :: S3Object -> Maybe [KeyValuePair]
tags} -> Maybe [KeyValuePair]
tags) (\s :: S3Object
s@S3Object' {} Maybe [KeyValuePair]
a -> S3Object
s {$sel:tags:S3Object' :: Maybe [KeyValuePair]
tags = Maybe [KeyValuePair]
a} :: S3Object) 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
s3Object_versionId :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)
s3Object_versionId :: Lens' S3Object (Maybe Text)
s3Object_versionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3Object' {Maybe Text
versionId :: Maybe Text
$sel:versionId:S3Object' :: S3Object -> Maybe Text
versionId} -> Maybe Text
versionId) (\s :: S3Object
s@S3Object' {} Maybe Text
a -> S3Object
s {$sel:versionId:S3Object' :: Maybe Text
versionId = Maybe Text
a} :: S3Object)
instance Data.FromJSON S3Object where
parseJSON :: Value -> Parser S3Object
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"S3Object"
( \Object
x ->
Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Bool
-> Maybe ServerSideEncryption
-> Maybe Integer
-> Maybe StorageClass
-> Maybe [KeyValuePair]
-> Maybe Text
-> S3Object
S3Object'
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
"bucketArn")
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
"eTag")
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
"extension")
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
"key")
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
"lastModified")
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
"path")
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
"publicAccess")
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
"serverSideEncryption")
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
"size")
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
"storageClass")
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
"tags" 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
"versionId")
)
instance Prelude.Hashable S3Object where
hashWithSalt :: Int -> S3Object -> Int
hashWithSalt Int
_salt S3Object' {Maybe Bool
Maybe Integer
Maybe [KeyValuePair]
Maybe Text
Maybe ISO8601
Maybe ServerSideEncryption
Maybe StorageClass
versionId :: Maybe Text
tags :: Maybe [KeyValuePair]
storageClass :: Maybe StorageClass
size :: Maybe Integer
serverSideEncryption :: Maybe ServerSideEncryption
publicAccess :: Maybe Bool
path :: Maybe Text
lastModified :: Maybe ISO8601
key :: Maybe Text
extension :: Maybe Text
eTag :: Maybe Text
bucketArn :: Maybe Text
$sel:versionId:S3Object' :: S3Object -> Maybe Text
$sel:tags:S3Object' :: S3Object -> Maybe [KeyValuePair]
$sel:storageClass:S3Object' :: S3Object -> Maybe StorageClass
$sel:size:S3Object' :: S3Object -> Maybe Integer
$sel:serverSideEncryption:S3Object' :: S3Object -> Maybe ServerSideEncryption
$sel:publicAccess:S3Object' :: S3Object -> Maybe Bool
$sel:path:S3Object' :: S3Object -> Maybe Text
$sel:lastModified:S3Object' :: S3Object -> Maybe ISO8601
$sel:key:S3Object' :: S3Object -> Maybe Text
$sel:extension:S3Object' :: S3Object -> Maybe Text
$sel:eTag:S3Object' :: S3Object -> Maybe Text
$sel:bucketArn:S3Object' :: S3Object -> Maybe Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
bucketArn
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eTag
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
extension
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
key
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
lastModified
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
path
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
publicAccess
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ServerSideEncryption
serverSideEncryption
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
size
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StorageClass
storageClass
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [KeyValuePair]
tags
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
versionId
instance Prelude.NFData S3Object where
rnf :: S3Object -> ()
rnf S3Object' {Maybe Bool
Maybe Integer
Maybe [KeyValuePair]
Maybe Text
Maybe ISO8601
Maybe ServerSideEncryption
Maybe StorageClass
versionId :: Maybe Text
tags :: Maybe [KeyValuePair]
storageClass :: Maybe StorageClass
size :: Maybe Integer
serverSideEncryption :: Maybe ServerSideEncryption
publicAccess :: Maybe Bool
path :: Maybe Text
lastModified :: Maybe ISO8601
key :: Maybe Text
extension :: Maybe Text
eTag :: Maybe Text
bucketArn :: Maybe Text
$sel:versionId:S3Object' :: S3Object -> Maybe Text
$sel:tags:S3Object' :: S3Object -> Maybe [KeyValuePair]
$sel:storageClass:S3Object' :: S3Object -> Maybe StorageClass
$sel:size:S3Object' :: S3Object -> Maybe Integer
$sel:serverSideEncryption:S3Object' :: S3Object -> Maybe ServerSideEncryption
$sel:publicAccess:S3Object' :: S3Object -> Maybe Bool
$sel:path:S3Object' :: S3Object -> Maybe Text
$sel:lastModified:S3Object' :: S3Object -> Maybe ISO8601
$sel:key:S3Object' :: S3Object -> Maybe Text
$sel:extension:S3Object' :: S3Object -> Maybe Text
$sel:eTag:S3Object' :: S3Object -> Maybe Text
$sel:bucketArn:S3Object' :: S3Object -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
bucketArn
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eTag
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
extension
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
key
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
lastModified
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
path
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
publicAccess
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ServerSideEncryption
serverSideEncryption
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
size
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StorageClass
storageClass
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [KeyValuePair]
tags
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
versionId