{-# 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 #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.MacieV2.Types.S3Object
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
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

-- | Provides information about the S3 object that a finding applies to.
--
-- /See:/ 'newS3Object' smart constructor.
data S3Object = S3Object'
  { -- | The Amazon Resource Name (ARN) of the bucket that contains the object.
    S3Object -> Maybe Text
bucketArn :: Prelude.Maybe Prelude.Text,
    -- | The entity tag (ETag) that identifies the affected version of the
    -- object. If the object was overwritten or changed after Amazon Macie
    -- produced the finding, this value might be different from the current
    -- ETag for the object.
    S3Object -> Maybe Text
eTag :: Prelude.Maybe Prelude.Text,
    -- | The file name extension of the object. If the object doesn\'t have a
    -- file name extension, this value is \"\".
    S3Object -> Maybe Text
extension :: Prelude.Maybe Prelude.Text,
    -- | The full key (name) that\'s assigned to the object.
    S3Object -> Maybe Text
key :: Prelude.Maybe Prelude.Text,
    -- | The date and time, in UTC and extended ISO 8601 format, when the object
    -- was last modified.
    S3Object -> Maybe ISO8601
lastModified :: Prelude.Maybe Data.ISO8601,
    -- | The path to the object, including the full key (name).
    S3Object -> Maybe Text
path :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether the object is publicly accessible due to the
    -- combination of permissions settings that apply to the object.
    S3Object -> Maybe Bool
publicAccess :: Prelude.Maybe Prelude.Bool,
    -- | The type of server-side encryption that\'s used to encrypt the object.
    S3Object -> Maybe ServerSideEncryption
serverSideEncryption :: Prelude.Maybe ServerSideEncryption,
    -- | The total storage size, in bytes, of the object.
    S3Object -> Maybe Integer
size :: Prelude.Maybe Prelude.Integer,
    -- | The storage class of the object.
    S3Object -> Maybe StorageClass
storageClass :: Prelude.Maybe StorageClass,
    -- | The tags that are associated with the object.
    S3Object -> Maybe [KeyValuePair]
tags :: Prelude.Maybe [KeyValuePair],
    -- | The identifier for the affected version of the object.
    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)

-- |
-- Create a value of 'S3Object' 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:
--
-- 'bucketArn', 's3Object_bucketArn' - The Amazon Resource Name (ARN) of the bucket that contains the object.
--
-- 'eTag', 's3Object_eTag' - The entity tag (ETag) that identifies the affected version of the
-- object. If the object was overwritten or changed after Amazon Macie
-- produced the finding, this value might be different from the current
-- ETag for the object.
--
-- 'extension', 's3Object_extension' - The file name extension of the object. If the object doesn\'t have a
-- file name extension, this value is \"\".
--
-- 'key', 's3Object_key' - The full key (name) that\'s assigned to the object.
--
-- 'lastModified', 's3Object_lastModified' - The date and time, in UTC and extended ISO 8601 format, when the object
-- was last modified.
--
-- 'path', 's3Object_path' - The path to the object, including the full key (name).
--
-- 'publicAccess', 's3Object_publicAccess' - Specifies whether the object is publicly accessible due to the
-- combination of permissions settings that apply to the object.
--
-- 'serverSideEncryption', 's3Object_serverSideEncryption' - The type of server-side encryption that\'s used to encrypt the object.
--
-- 'size', 's3Object_size' - The total storage size, in bytes, of the object.
--
-- 'storageClass', 's3Object_storageClass' - The storage class of the object.
--
-- 'tags', 's3Object_tags' - The tags that are associated with the object.
--
-- 'versionId', 's3Object_versionId' - The identifier for the affected version of the object.
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
    }

-- | The Amazon Resource Name (ARN) of the bucket that contains the object.
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)

-- | The entity tag (ETag) that identifies the affected version of the
-- object. If the object was overwritten or changed after Amazon Macie
-- produced the finding, this value might be different from the current
-- ETag for the object.
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)

-- | The file name extension of the object. If the object doesn\'t have a
-- file name extension, this value is \"\".
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)

-- | The full key (name) that\'s assigned to the object.
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)

-- | The date and time, in UTC and extended ISO 8601 format, when the object
-- was last modified.
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

-- | The path to the object, including the full key (name).
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)

-- | Specifies whether the object is publicly accessible due to the
-- combination of permissions settings that apply to the object.
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)

-- | The type of server-side encryption that\'s used to encrypt the object.
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)

-- | The total storage size, in bytes, of the object.
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)

-- | The storage class of the object.
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)

-- | The tags that are associated with the object.
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

-- | The identifier for the affected version of the object.
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