{-# 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.WorkDocs.Types.DocumentVersionMetadata
-- 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.WorkDocs.Types.DocumentVersionMetadata 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 Amazonka.WorkDocs.Types.DocumentSourceType
import Amazonka.WorkDocs.Types.DocumentStatusType
import Amazonka.WorkDocs.Types.DocumentThumbnailType

-- | Describes a version of a document.
--
-- /See:/ 'newDocumentVersionMetadata' smart constructor.
data DocumentVersionMetadata = DocumentVersionMetadata'
  { -- | The timestamp when the content of the document was originally created.
    DocumentVersionMetadata -> Maybe POSIX
contentCreatedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The timestamp when the content of the document was modified.
    DocumentVersionMetadata -> Maybe POSIX
contentModifiedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The content type of the document.
    DocumentVersionMetadata -> Maybe Text
contentType :: Prelude.Maybe Prelude.Text,
    -- | The timestamp when the document was first uploaded.
    DocumentVersionMetadata -> Maybe POSIX
createdTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The ID of the creator.
    DocumentVersionMetadata -> Maybe Text
creatorId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the version.
    DocumentVersionMetadata -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | The timestamp when the document was last uploaded.
    DocumentVersionMetadata -> Maybe POSIX
modifiedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The name of the version.
    DocumentVersionMetadata -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The signature of the document.
    DocumentVersionMetadata -> Maybe Text
signature :: Prelude.Maybe Prelude.Text,
    -- | The size of the document, in bytes.
    DocumentVersionMetadata -> Maybe Integer
size :: Prelude.Maybe Prelude.Integer,
    -- | The source of the document.
    DocumentVersionMetadata
-> Maybe (HashMap DocumentSourceType (Sensitive Text))
source :: Prelude.Maybe (Prelude.HashMap DocumentSourceType (Data.Sensitive Prelude.Text)),
    -- | The status of the document.
    DocumentVersionMetadata -> Maybe DocumentStatusType
status :: Prelude.Maybe DocumentStatusType,
    -- | The thumbnail of the document.
    DocumentVersionMetadata
-> Maybe (HashMap DocumentThumbnailType (Sensitive Text))
thumbnail :: Prelude.Maybe (Prelude.HashMap DocumentThumbnailType (Data.Sensitive Prelude.Text))
  }
  deriving (DocumentVersionMetadata -> DocumentVersionMetadata -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DocumentVersionMetadata -> DocumentVersionMetadata -> Bool
$c/= :: DocumentVersionMetadata -> DocumentVersionMetadata -> Bool
== :: DocumentVersionMetadata -> DocumentVersionMetadata -> Bool
$c== :: DocumentVersionMetadata -> DocumentVersionMetadata -> Bool
Prelude.Eq, Int -> DocumentVersionMetadata -> ShowS
[DocumentVersionMetadata] -> ShowS
DocumentVersionMetadata -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DocumentVersionMetadata] -> ShowS
$cshowList :: [DocumentVersionMetadata] -> ShowS
show :: DocumentVersionMetadata -> String
$cshow :: DocumentVersionMetadata -> String
showsPrec :: Int -> DocumentVersionMetadata -> ShowS
$cshowsPrec :: Int -> DocumentVersionMetadata -> ShowS
Prelude.Show, forall x. Rep DocumentVersionMetadata x -> DocumentVersionMetadata
forall x. DocumentVersionMetadata -> Rep DocumentVersionMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DocumentVersionMetadata x -> DocumentVersionMetadata
$cfrom :: forall x. DocumentVersionMetadata -> Rep DocumentVersionMetadata x
Prelude.Generic)

-- |
-- Create a value of 'DocumentVersionMetadata' 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:
--
-- 'contentCreatedTimestamp', 'documentVersionMetadata_contentCreatedTimestamp' - The timestamp when the content of the document was originally created.
--
-- 'contentModifiedTimestamp', 'documentVersionMetadata_contentModifiedTimestamp' - The timestamp when the content of the document was modified.
--
-- 'contentType', 'documentVersionMetadata_contentType' - The content type of the document.
--
-- 'createdTimestamp', 'documentVersionMetadata_createdTimestamp' - The timestamp when the document was first uploaded.
--
-- 'creatorId', 'documentVersionMetadata_creatorId' - The ID of the creator.
--
-- 'id', 'documentVersionMetadata_id' - The ID of the version.
--
-- 'modifiedTimestamp', 'documentVersionMetadata_modifiedTimestamp' - The timestamp when the document was last uploaded.
--
-- 'name', 'documentVersionMetadata_name' - The name of the version.
--
-- 'signature', 'documentVersionMetadata_signature' - The signature of the document.
--
-- 'size', 'documentVersionMetadata_size' - The size of the document, in bytes.
--
-- 'source', 'documentVersionMetadata_source' - The source of the document.
--
-- 'status', 'documentVersionMetadata_status' - The status of the document.
--
-- 'thumbnail', 'documentVersionMetadata_thumbnail' - The thumbnail of the document.
newDocumentVersionMetadata ::
  DocumentVersionMetadata
newDocumentVersionMetadata :: DocumentVersionMetadata
newDocumentVersionMetadata =
  DocumentVersionMetadata'
    { $sel:contentCreatedTimestamp:DocumentVersionMetadata' :: Maybe POSIX
contentCreatedTimestamp =
        forall a. Maybe a
Prelude.Nothing,
      $sel:contentModifiedTimestamp:DocumentVersionMetadata' :: Maybe POSIX
contentModifiedTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:contentType:DocumentVersionMetadata' :: Maybe Text
contentType = forall a. Maybe a
Prelude.Nothing,
      $sel:createdTimestamp:DocumentVersionMetadata' :: Maybe POSIX
createdTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:creatorId:DocumentVersionMetadata' :: Maybe Text
creatorId = forall a. Maybe a
Prelude.Nothing,
      $sel:id:DocumentVersionMetadata' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:modifiedTimestamp:DocumentVersionMetadata' :: Maybe POSIX
modifiedTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:name:DocumentVersionMetadata' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:signature:DocumentVersionMetadata' :: Maybe Text
signature = forall a. Maybe a
Prelude.Nothing,
      $sel:size:DocumentVersionMetadata' :: Maybe Integer
size = forall a. Maybe a
Prelude.Nothing,
      $sel:source:DocumentVersionMetadata' :: Maybe (HashMap DocumentSourceType (Sensitive Text))
source = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DocumentVersionMetadata' :: Maybe DocumentStatusType
status = forall a. Maybe a
Prelude.Nothing,
      $sel:thumbnail:DocumentVersionMetadata' :: Maybe (HashMap DocumentThumbnailType (Sensitive Text))
thumbnail = forall a. Maybe a
Prelude.Nothing
    }

-- | The timestamp when the content of the document was originally created.
documentVersionMetadata_contentCreatedTimestamp :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.UTCTime)
documentVersionMetadata_contentCreatedTimestamp :: Lens' DocumentVersionMetadata (Maybe UTCTime)
documentVersionMetadata_contentCreatedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe POSIX
contentCreatedTimestamp :: Maybe POSIX
$sel:contentCreatedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
contentCreatedTimestamp} -> Maybe POSIX
contentCreatedTimestamp) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe POSIX
a -> DocumentVersionMetadata
s {$sel:contentCreatedTimestamp:DocumentVersionMetadata' :: Maybe POSIX
contentCreatedTimestamp = Maybe POSIX
a} :: DocumentVersionMetadata) 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 timestamp when the content of the document was modified.
documentVersionMetadata_contentModifiedTimestamp :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.UTCTime)
documentVersionMetadata_contentModifiedTimestamp :: Lens' DocumentVersionMetadata (Maybe UTCTime)
documentVersionMetadata_contentModifiedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe POSIX
contentModifiedTimestamp :: Maybe POSIX
$sel:contentModifiedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
contentModifiedTimestamp} -> Maybe POSIX
contentModifiedTimestamp) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe POSIX
a -> DocumentVersionMetadata
s {$sel:contentModifiedTimestamp:DocumentVersionMetadata' :: Maybe POSIX
contentModifiedTimestamp = Maybe POSIX
a} :: DocumentVersionMetadata) 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 content type of the document.
documentVersionMetadata_contentType :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
documentVersionMetadata_contentType :: Lens' DocumentVersionMetadata (Maybe Text)
documentVersionMetadata_contentType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe Text
contentType :: Maybe Text
$sel:contentType:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
contentType} -> Maybe Text
contentType) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe Text
a -> DocumentVersionMetadata
s {$sel:contentType:DocumentVersionMetadata' :: Maybe Text
contentType = Maybe Text
a} :: DocumentVersionMetadata)

-- | The timestamp when the document was first uploaded.
documentVersionMetadata_createdTimestamp :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.UTCTime)
documentVersionMetadata_createdTimestamp :: Lens' DocumentVersionMetadata (Maybe UTCTime)
documentVersionMetadata_createdTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe POSIX
createdTimestamp :: Maybe POSIX
$sel:createdTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
createdTimestamp} -> Maybe POSIX
createdTimestamp) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe POSIX
a -> DocumentVersionMetadata
s {$sel:createdTimestamp:DocumentVersionMetadata' :: Maybe POSIX
createdTimestamp = Maybe POSIX
a} :: DocumentVersionMetadata) 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 ID of the creator.
documentVersionMetadata_creatorId :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
documentVersionMetadata_creatorId :: Lens' DocumentVersionMetadata (Maybe Text)
documentVersionMetadata_creatorId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe Text
creatorId :: Maybe Text
$sel:creatorId:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
creatorId} -> Maybe Text
creatorId) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe Text
a -> DocumentVersionMetadata
s {$sel:creatorId:DocumentVersionMetadata' :: Maybe Text
creatorId = Maybe Text
a} :: DocumentVersionMetadata)

-- | The ID of the version.
documentVersionMetadata_id :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
documentVersionMetadata_id :: Lens' DocumentVersionMetadata (Maybe Text)
documentVersionMetadata_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe Text
id :: Maybe Text
$sel:id:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
id} -> Maybe Text
id) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe Text
a -> DocumentVersionMetadata
s {$sel:id:DocumentVersionMetadata' :: Maybe Text
id = Maybe Text
a} :: DocumentVersionMetadata)

-- | The timestamp when the document was last uploaded.
documentVersionMetadata_modifiedTimestamp :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.UTCTime)
documentVersionMetadata_modifiedTimestamp :: Lens' DocumentVersionMetadata (Maybe UTCTime)
documentVersionMetadata_modifiedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe POSIX
modifiedTimestamp :: Maybe POSIX
$sel:modifiedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
modifiedTimestamp} -> Maybe POSIX
modifiedTimestamp) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe POSIX
a -> DocumentVersionMetadata
s {$sel:modifiedTimestamp:DocumentVersionMetadata' :: Maybe POSIX
modifiedTimestamp = Maybe POSIX
a} :: DocumentVersionMetadata) 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 name of the version.
documentVersionMetadata_name :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
documentVersionMetadata_name :: Lens' DocumentVersionMetadata (Maybe Text)
documentVersionMetadata_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe Text
name :: Maybe Text
$sel:name:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
name} -> Maybe Text
name) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe Text
a -> DocumentVersionMetadata
s {$sel:name:DocumentVersionMetadata' :: Maybe Text
name = Maybe Text
a} :: DocumentVersionMetadata)

-- | The signature of the document.
documentVersionMetadata_signature :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
documentVersionMetadata_signature :: Lens' DocumentVersionMetadata (Maybe Text)
documentVersionMetadata_signature = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe Text
signature :: Maybe Text
$sel:signature:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
signature} -> Maybe Text
signature) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe Text
a -> DocumentVersionMetadata
s {$sel:signature:DocumentVersionMetadata' :: Maybe Text
signature = Maybe Text
a} :: DocumentVersionMetadata)

-- | The size of the document, in bytes.
documentVersionMetadata_size :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Integer)
documentVersionMetadata_size :: Lens' DocumentVersionMetadata (Maybe Integer)
documentVersionMetadata_size = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe Integer
size :: Maybe Integer
$sel:size:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Integer
size} -> Maybe Integer
size) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe Integer
a -> DocumentVersionMetadata
s {$sel:size:DocumentVersionMetadata' :: Maybe Integer
size = Maybe Integer
a} :: DocumentVersionMetadata)

-- | The source of the document.
documentVersionMetadata_source :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe (Prelude.HashMap DocumentSourceType Prelude.Text))
documentVersionMetadata_source :: Lens'
  DocumentVersionMetadata (Maybe (HashMap DocumentSourceType Text))
documentVersionMetadata_source = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe (HashMap DocumentSourceType (Sensitive Text))
source :: Maybe (HashMap DocumentSourceType (Sensitive Text))
$sel:source:DocumentVersionMetadata' :: DocumentVersionMetadata
-> Maybe (HashMap DocumentSourceType (Sensitive Text))
source} -> Maybe (HashMap DocumentSourceType (Sensitive Text))
source) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe (HashMap DocumentSourceType (Sensitive Text))
a -> DocumentVersionMetadata
s {$sel:source:DocumentVersionMetadata' :: Maybe (HashMap DocumentSourceType (Sensitive Text))
source = Maybe (HashMap DocumentSourceType (Sensitive Text))
a} :: DocumentVersionMetadata) 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 status of the document.
documentVersionMetadata_status :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe DocumentStatusType)
documentVersionMetadata_status :: Lens' DocumentVersionMetadata (Maybe DocumentStatusType)
documentVersionMetadata_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe DocumentStatusType
status :: Maybe DocumentStatusType
$sel:status:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe DocumentStatusType
status} -> Maybe DocumentStatusType
status) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe DocumentStatusType
a -> DocumentVersionMetadata
s {$sel:status:DocumentVersionMetadata' :: Maybe DocumentStatusType
status = Maybe DocumentStatusType
a} :: DocumentVersionMetadata)

-- | The thumbnail of the document.
documentVersionMetadata_thumbnail :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe (Prelude.HashMap DocumentThumbnailType Prelude.Text))
documentVersionMetadata_thumbnail :: Lens'
  DocumentVersionMetadata
  (Maybe (HashMap DocumentThumbnailType Text))
documentVersionMetadata_thumbnail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentVersionMetadata' {Maybe (HashMap DocumentThumbnailType (Sensitive Text))
thumbnail :: Maybe (HashMap DocumentThumbnailType (Sensitive Text))
$sel:thumbnail:DocumentVersionMetadata' :: DocumentVersionMetadata
-> Maybe (HashMap DocumentThumbnailType (Sensitive Text))
thumbnail} -> Maybe (HashMap DocumentThumbnailType (Sensitive Text))
thumbnail) (\s :: DocumentVersionMetadata
s@DocumentVersionMetadata' {} Maybe (HashMap DocumentThumbnailType (Sensitive Text))
a -> DocumentVersionMetadata
s {$sel:thumbnail:DocumentVersionMetadata' :: Maybe (HashMap DocumentThumbnailType (Sensitive Text))
thumbnail = Maybe (HashMap DocumentThumbnailType (Sensitive Text))
a} :: DocumentVersionMetadata) 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

instance Data.FromJSON DocumentVersionMetadata where
  parseJSON :: Value -> Parser DocumentVersionMetadata
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DocumentVersionMetadata"
      ( \Object
x ->
          Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Integer
-> Maybe (HashMap DocumentSourceType (Sensitive Text))
-> Maybe DocumentStatusType
-> Maybe (HashMap DocumentThumbnailType (Sensitive Text))
-> DocumentVersionMetadata
DocumentVersionMetadata'
            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
"ContentCreatedTimestamp")
            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
"ContentModifiedTimestamp")
            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
"ContentType")
            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
"CreatedTimestamp")
            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
"CreatorId")
            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
"Id")
            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
"ModifiedTimestamp")
            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
"Name")
            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
"Signature")
            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
"Source" 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
"Status")
            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
"Thumbnail" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable DocumentVersionMetadata where
  hashWithSalt :: Int -> DocumentVersionMetadata -> Int
hashWithSalt Int
_salt DocumentVersionMetadata' {Maybe Integer
Maybe Text
Maybe (HashMap DocumentSourceType (Sensitive Text))
Maybe (HashMap DocumentThumbnailType (Sensitive Text))
Maybe POSIX
Maybe DocumentStatusType
thumbnail :: Maybe (HashMap DocumentThumbnailType (Sensitive Text))
status :: Maybe DocumentStatusType
source :: Maybe (HashMap DocumentSourceType (Sensitive Text))
size :: Maybe Integer
signature :: Maybe Text
name :: Maybe Text
modifiedTimestamp :: Maybe POSIX
id :: Maybe Text
creatorId :: Maybe Text
createdTimestamp :: Maybe POSIX
contentType :: Maybe Text
contentModifiedTimestamp :: Maybe POSIX
contentCreatedTimestamp :: Maybe POSIX
$sel:thumbnail:DocumentVersionMetadata' :: DocumentVersionMetadata
-> Maybe (HashMap DocumentThumbnailType (Sensitive Text))
$sel:status:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe DocumentStatusType
$sel:source:DocumentVersionMetadata' :: DocumentVersionMetadata
-> Maybe (HashMap DocumentSourceType (Sensitive Text))
$sel:size:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Integer
$sel:signature:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:name:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:modifiedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
$sel:id:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:creatorId:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:createdTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
$sel:contentType:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:contentModifiedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
$sel:contentCreatedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
contentCreatedTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
contentModifiedTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
contentType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
creatorId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
modifiedTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
signature
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
size
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap DocumentSourceType (Sensitive Text))
source
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DocumentStatusType
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap DocumentThumbnailType (Sensitive Text))
thumbnail

instance Prelude.NFData DocumentVersionMetadata where
  rnf :: DocumentVersionMetadata -> ()
rnf DocumentVersionMetadata' {Maybe Integer
Maybe Text
Maybe (HashMap DocumentSourceType (Sensitive Text))
Maybe (HashMap DocumentThumbnailType (Sensitive Text))
Maybe POSIX
Maybe DocumentStatusType
thumbnail :: Maybe (HashMap DocumentThumbnailType (Sensitive Text))
status :: Maybe DocumentStatusType
source :: Maybe (HashMap DocumentSourceType (Sensitive Text))
size :: Maybe Integer
signature :: Maybe Text
name :: Maybe Text
modifiedTimestamp :: Maybe POSIX
id :: Maybe Text
creatorId :: Maybe Text
createdTimestamp :: Maybe POSIX
contentType :: Maybe Text
contentModifiedTimestamp :: Maybe POSIX
contentCreatedTimestamp :: Maybe POSIX
$sel:thumbnail:DocumentVersionMetadata' :: DocumentVersionMetadata
-> Maybe (HashMap DocumentThumbnailType (Sensitive Text))
$sel:status:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe DocumentStatusType
$sel:source:DocumentVersionMetadata' :: DocumentVersionMetadata
-> Maybe (HashMap DocumentSourceType (Sensitive Text))
$sel:size:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Integer
$sel:signature:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:name:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:modifiedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
$sel:id:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:creatorId:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:createdTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
$sel:contentType:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe Text
$sel:contentModifiedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
$sel:contentCreatedTimestamp:DocumentVersionMetadata' :: DocumentVersionMetadata -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
contentCreatedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
contentModifiedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
contentType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
creatorId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
modifiedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
signature
      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 (HashMap DocumentSourceType (Sensitive Text))
source
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DocumentStatusType
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap DocumentThumbnailType (Sensitive Text))
thumbnail