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

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

-- |
-- Module      : Amazonka.BackupStorage.NotifyObjectComplete
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Complete upload
module Amazonka.BackupStorage.NotifyObjectComplete
  ( -- * Creating a Request
    NotifyObjectComplete (..),
    newNotifyObjectComplete,

    -- * Request Lenses
    notifyObjectComplete_metadataBlobChecksum,
    notifyObjectComplete_metadataBlobChecksumAlgorithm,
    notifyObjectComplete_metadataBlobLength,
    notifyObjectComplete_metadataString,
    notifyObjectComplete_backupJobId,
    notifyObjectComplete_uploadId,
    notifyObjectComplete_objectChecksum,
    notifyObjectComplete_objectChecksumAlgorithm,
    notifyObjectComplete_metadataBlob,

    -- * Destructuring the Response
    NotifyObjectCompleteResponse (..),
    newNotifyObjectCompleteResponse,

    -- * Response Lenses
    notifyObjectCompleteResponse_httpStatus,
    notifyObjectCompleteResponse_objectChecksum,
    notifyObjectCompleteResponse_objectChecksumAlgorithm,
  )
where

import Amazonka.BackupStorage.Types
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newNotifyObjectComplete' smart constructor.
data NotifyObjectComplete = NotifyObjectComplete'
  { -- | Checksum of MetadataBlob.
    NotifyObjectComplete -> Maybe Text
metadataBlobChecksum :: Prelude.Maybe Prelude.Text,
    -- | Checksum algorithm.
    NotifyObjectComplete -> Maybe DataChecksumAlgorithm
metadataBlobChecksumAlgorithm :: Prelude.Maybe DataChecksumAlgorithm,
    -- | The size of MetadataBlob.
    NotifyObjectComplete -> Maybe Integer
metadataBlobLength :: Prelude.Maybe Prelude.Integer,
    -- | Optional metadata associated with an Object. Maximum string length is
    -- 256 bytes.
    NotifyObjectComplete -> Maybe Text
metadataString :: Prelude.Maybe Prelude.Text,
    -- | Backup job Id for the in-progress backup
    NotifyObjectComplete -> Text
backupJobId :: Prelude.Text,
    -- | Upload Id for the in-progress upload
    NotifyObjectComplete -> Text
uploadId :: Prelude.Text,
    -- | Object checksum
    NotifyObjectComplete -> Text
objectChecksum :: Prelude.Text,
    -- | Checksum algorithm
    NotifyObjectComplete -> SummaryChecksumAlgorithm
objectChecksumAlgorithm :: SummaryChecksumAlgorithm,
    -- | Optional metadata associated with an Object. Maximum length is 4MB.
    NotifyObjectComplete -> HashedBody
metadataBlob :: Data.HashedBody
  }
  deriving (Int -> NotifyObjectComplete -> ShowS
[NotifyObjectComplete] -> ShowS
NotifyObjectComplete -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NotifyObjectComplete] -> ShowS
$cshowList :: [NotifyObjectComplete] -> ShowS
show :: NotifyObjectComplete -> String
$cshow :: NotifyObjectComplete -> String
showsPrec :: Int -> NotifyObjectComplete -> ShowS
$cshowsPrec :: Int -> NotifyObjectComplete -> ShowS
Prelude.Show, forall x. Rep NotifyObjectComplete x -> NotifyObjectComplete
forall x. NotifyObjectComplete -> Rep NotifyObjectComplete x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NotifyObjectComplete x -> NotifyObjectComplete
$cfrom :: forall x. NotifyObjectComplete -> Rep NotifyObjectComplete x
Prelude.Generic)

-- |
-- Create a value of 'NotifyObjectComplete' 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:
--
-- 'metadataBlobChecksum', 'notifyObjectComplete_metadataBlobChecksum' - Checksum of MetadataBlob.
--
-- 'metadataBlobChecksumAlgorithm', 'notifyObjectComplete_metadataBlobChecksumAlgorithm' - Checksum algorithm.
--
-- 'metadataBlobLength', 'notifyObjectComplete_metadataBlobLength' - The size of MetadataBlob.
--
-- 'metadataString', 'notifyObjectComplete_metadataString' - Optional metadata associated with an Object. Maximum string length is
-- 256 bytes.
--
-- 'backupJobId', 'notifyObjectComplete_backupJobId' - Backup job Id for the in-progress backup
--
-- 'uploadId', 'notifyObjectComplete_uploadId' - Upload Id for the in-progress upload
--
-- 'objectChecksum', 'notifyObjectComplete_objectChecksum' - Object checksum
--
-- 'objectChecksumAlgorithm', 'notifyObjectComplete_objectChecksumAlgorithm' - Checksum algorithm
--
-- 'metadataBlob', 'notifyObjectComplete_metadataBlob' - Optional metadata associated with an Object. Maximum length is 4MB.
newNotifyObjectComplete ::
  -- | 'backupJobId'
  Prelude.Text ->
  -- | 'uploadId'
  Prelude.Text ->
  -- | 'objectChecksum'
  Prelude.Text ->
  -- | 'objectChecksumAlgorithm'
  SummaryChecksumAlgorithm ->
  -- | 'metadataBlob'
  Data.HashedBody ->
  NotifyObjectComplete
newNotifyObjectComplete :: Text
-> Text
-> Text
-> SummaryChecksumAlgorithm
-> HashedBody
-> NotifyObjectComplete
newNotifyObjectComplete
  Text
pBackupJobId_
  Text
pUploadId_
  Text
pObjectChecksum_
  SummaryChecksumAlgorithm
pObjectChecksumAlgorithm_
  HashedBody
pMetadataBlob_ =
    NotifyObjectComplete'
      { $sel:metadataBlobChecksum:NotifyObjectComplete' :: Maybe Text
metadataBlobChecksum =
          forall a. Maybe a
Prelude.Nothing,
        $sel:metadataBlobChecksumAlgorithm:NotifyObjectComplete' :: Maybe DataChecksumAlgorithm
metadataBlobChecksumAlgorithm = forall a. Maybe a
Prelude.Nothing,
        $sel:metadataBlobLength:NotifyObjectComplete' :: Maybe Integer
metadataBlobLength = forall a. Maybe a
Prelude.Nothing,
        $sel:metadataString:NotifyObjectComplete' :: Maybe Text
metadataString = forall a. Maybe a
Prelude.Nothing,
        $sel:backupJobId:NotifyObjectComplete' :: Text
backupJobId = Text
pBackupJobId_,
        $sel:uploadId:NotifyObjectComplete' :: Text
uploadId = Text
pUploadId_,
        $sel:objectChecksum:NotifyObjectComplete' :: Text
objectChecksum = Text
pObjectChecksum_,
        $sel:objectChecksumAlgorithm:NotifyObjectComplete' :: SummaryChecksumAlgorithm
objectChecksumAlgorithm = SummaryChecksumAlgorithm
pObjectChecksumAlgorithm_,
        $sel:metadataBlob:NotifyObjectComplete' :: HashedBody
metadataBlob = HashedBody
pMetadataBlob_
      }

-- | Checksum of MetadataBlob.
notifyObjectComplete_metadataBlobChecksum :: Lens.Lens' NotifyObjectComplete (Prelude.Maybe Prelude.Text)
notifyObjectComplete_metadataBlobChecksum :: Lens' NotifyObjectComplete (Maybe Text)
notifyObjectComplete_metadataBlobChecksum = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {Maybe Text
metadataBlobChecksum :: Maybe Text
$sel:metadataBlobChecksum:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Text
metadataBlobChecksum} -> Maybe Text
metadataBlobChecksum) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} Maybe Text
a -> NotifyObjectComplete
s {$sel:metadataBlobChecksum:NotifyObjectComplete' :: Maybe Text
metadataBlobChecksum = Maybe Text
a} :: NotifyObjectComplete)

-- | Checksum algorithm.
notifyObjectComplete_metadataBlobChecksumAlgorithm :: Lens.Lens' NotifyObjectComplete (Prelude.Maybe DataChecksumAlgorithm)
notifyObjectComplete_metadataBlobChecksumAlgorithm :: Lens' NotifyObjectComplete (Maybe DataChecksumAlgorithm)
notifyObjectComplete_metadataBlobChecksumAlgorithm = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {Maybe DataChecksumAlgorithm
metadataBlobChecksumAlgorithm :: Maybe DataChecksumAlgorithm
$sel:metadataBlobChecksumAlgorithm:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe DataChecksumAlgorithm
metadataBlobChecksumAlgorithm} -> Maybe DataChecksumAlgorithm
metadataBlobChecksumAlgorithm) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} Maybe DataChecksumAlgorithm
a -> NotifyObjectComplete
s {$sel:metadataBlobChecksumAlgorithm:NotifyObjectComplete' :: Maybe DataChecksumAlgorithm
metadataBlobChecksumAlgorithm = Maybe DataChecksumAlgorithm
a} :: NotifyObjectComplete)

-- | The size of MetadataBlob.
notifyObjectComplete_metadataBlobLength :: Lens.Lens' NotifyObjectComplete (Prelude.Maybe Prelude.Integer)
notifyObjectComplete_metadataBlobLength :: Lens' NotifyObjectComplete (Maybe Integer)
notifyObjectComplete_metadataBlobLength = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {Maybe Integer
metadataBlobLength :: Maybe Integer
$sel:metadataBlobLength:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Integer
metadataBlobLength} -> Maybe Integer
metadataBlobLength) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} Maybe Integer
a -> NotifyObjectComplete
s {$sel:metadataBlobLength:NotifyObjectComplete' :: Maybe Integer
metadataBlobLength = Maybe Integer
a} :: NotifyObjectComplete)

-- | Optional metadata associated with an Object. Maximum string length is
-- 256 bytes.
notifyObjectComplete_metadataString :: Lens.Lens' NotifyObjectComplete (Prelude.Maybe Prelude.Text)
notifyObjectComplete_metadataString :: Lens' NotifyObjectComplete (Maybe Text)
notifyObjectComplete_metadataString = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {Maybe Text
metadataString :: Maybe Text
$sel:metadataString:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Text
metadataString} -> Maybe Text
metadataString) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} Maybe Text
a -> NotifyObjectComplete
s {$sel:metadataString:NotifyObjectComplete' :: Maybe Text
metadataString = Maybe Text
a} :: NotifyObjectComplete)

-- | Backup job Id for the in-progress backup
notifyObjectComplete_backupJobId :: Lens.Lens' NotifyObjectComplete Prelude.Text
notifyObjectComplete_backupJobId :: Lens' NotifyObjectComplete Text
notifyObjectComplete_backupJobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {Text
backupJobId :: Text
$sel:backupJobId:NotifyObjectComplete' :: NotifyObjectComplete -> Text
backupJobId} -> Text
backupJobId) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} Text
a -> NotifyObjectComplete
s {$sel:backupJobId:NotifyObjectComplete' :: Text
backupJobId = Text
a} :: NotifyObjectComplete)

-- | Upload Id for the in-progress upload
notifyObjectComplete_uploadId :: Lens.Lens' NotifyObjectComplete Prelude.Text
notifyObjectComplete_uploadId :: Lens' NotifyObjectComplete Text
notifyObjectComplete_uploadId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {Text
uploadId :: Text
$sel:uploadId:NotifyObjectComplete' :: NotifyObjectComplete -> Text
uploadId} -> Text
uploadId) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} Text
a -> NotifyObjectComplete
s {$sel:uploadId:NotifyObjectComplete' :: Text
uploadId = Text
a} :: NotifyObjectComplete)

-- | Object checksum
notifyObjectComplete_objectChecksum :: Lens.Lens' NotifyObjectComplete Prelude.Text
notifyObjectComplete_objectChecksum :: Lens' NotifyObjectComplete Text
notifyObjectComplete_objectChecksum = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {Text
objectChecksum :: Text
$sel:objectChecksum:NotifyObjectComplete' :: NotifyObjectComplete -> Text
objectChecksum} -> Text
objectChecksum) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} Text
a -> NotifyObjectComplete
s {$sel:objectChecksum:NotifyObjectComplete' :: Text
objectChecksum = Text
a} :: NotifyObjectComplete)

-- | Checksum algorithm
notifyObjectComplete_objectChecksumAlgorithm :: Lens.Lens' NotifyObjectComplete SummaryChecksumAlgorithm
notifyObjectComplete_objectChecksumAlgorithm :: Lens' NotifyObjectComplete SummaryChecksumAlgorithm
notifyObjectComplete_objectChecksumAlgorithm = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {SummaryChecksumAlgorithm
objectChecksumAlgorithm :: SummaryChecksumAlgorithm
$sel:objectChecksumAlgorithm:NotifyObjectComplete' :: NotifyObjectComplete -> SummaryChecksumAlgorithm
objectChecksumAlgorithm} -> SummaryChecksumAlgorithm
objectChecksumAlgorithm) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} SummaryChecksumAlgorithm
a -> NotifyObjectComplete
s {$sel:objectChecksumAlgorithm:NotifyObjectComplete' :: SummaryChecksumAlgorithm
objectChecksumAlgorithm = SummaryChecksumAlgorithm
a} :: NotifyObjectComplete)

-- | Optional metadata associated with an Object. Maximum length is 4MB.
notifyObjectComplete_metadataBlob :: Lens.Lens' NotifyObjectComplete Data.HashedBody
notifyObjectComplete_metadataBlob :: Lens' NotifyObjectComplete HashedBody
notifyObjectComplete_metadataBlob = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectComplete' {HashedBody
metadataBlob :: HashedBody
$sel:metadataBlob:NotifyObjectComplete' :: NotifyObjectComplete -> HashedBody
metadataBlob} -> HashedBody
metadataBlob) (\s :: NotifyObjectComplete
s@NotifyObjectComplete' {} HashedBody
a -> NotifyObjectComplete
s {$sel:metadataBlob:NotifyObjectComplete' :: HashedBody
metadataBlob = HashedBody
a} :: NotifyObjectComplete)

instance Core.AWSRequest NotifyObjectComplete where
  type
    AWSResponse NotifyObjectComplete =
      NotifyObjectCompleteResponse
  request :: (Service -> Service)
-> NotifyObjectComplete -> Request NotifyObjectComplete
request Service -> Service
overrides =
    forall a. (ToRequest a, ToBody a) => Service -> a -> Request a
Request.putBody (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy NotifyObjectComplete
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse NotifyObjectComplete)))
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 -> SummaryChecksumAlgorithm -> NotifyObjectCompleteResponse
NotifyObjectCompleteResponse'
            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
"ObjectChecksum")
            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
"ObjectChecksumAlgorithm")
      )

instance Data.ToBody NotifyObjectComplete where
  toBody :: NotifyObjectComplete -> RequestBody
toBody NotifyObjectComplete' {Maybe Integer
Maybe Text
Maybe DataChecksumAlgorithm
Text
HashedBody
SummaryChecksumAlgorithm
metadataBlob :: HashedBody
objectChecksumAlgorithm :: SummaryChecksumAlgorithm
objectChecksum :: Text
uploadId :: Text
backupJobId :: Text
metadataString :: Maybe Text
metadataBlobLength :: Maybe Integer
metadataBlobChecksumAlgorithm :: Maybe DataChecksumAlgorithm
metadataBlobChecksum :: Maybe Text
$sel:metadataBlob:NotifyObjectComplete' :: NotifyObjectComplete -> HashedBody
$sel:objectChecksumAlgorithm:NotifyObjectComplete' :: NotifyObjectComplete -> SummaryChecksumAlgorithm
$sel:objectChecksum:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:uploadId:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:backupJobId:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:metadataString:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Text
$sel:metadataBlobLength:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Integer
$sel:metadataBlobChecksumAlgorithm:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe DataChecksumAlgorithm
$sel:metadataBlobChecksum:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Text
..} =
    forall a. ToBody a => a -> RequestBody
Data.toBody HashedBody
metadataBlob

instance Data.ToHeaders NotifyObjectComplete where
  toHeaders :: NotifyObjectComplete -> 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.ToPath NotifyObjectComplete where
  toPath :: NotifyObjectComplete -> ByteString
toPath NotifyObjectComplete' {Maybe Integer
Maybe Text
Maybe DataChecksumAlgorithm
Text
HashedBody
SummaryChecksumAlgorithm
metadataBlob :: HashedBody
objectChecksumAlgorithm :: SummaryChecksumAlgorithm
objectChecksum :: Text
uploadId :: Text
backupJobId :: Text
metadataString :: Maybe Text
metadataBlobLength :: Maybe Integer
metadataBlobChecksumAlgorithm :: Maybe DataChecksumAlgorithm
metadataBlobChecksum :: Maybe Text
$sel:metadataBlob:NotifyObjectComplete' :: NotifyObjectComplete -> HashedBody
$sel:objectChecksumAlgorithm:NotifyObjectComplete' :: NotifyObjectComplete -> SummaryChecksumAlgorithm
$sel:objectChecksum:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:uploadId:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:backupJobId:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:metadataString:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Text
$sel:metadataBlobLength:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Integer
$sel:metadataBlobChecksumAlgorithm:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe DataChecksumAlgorithm
$sel:metadataBlobChecksum:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/backup-jobs/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
backupJobId,
        ByteString
"/object/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
uploadId,
        ByteString
"/complete"
      ]

instance Data.ToQuery NotifyObjectComplete where
  toQuery :: NotifyObjectComplete -> QueryString
toQuery NotifyObjectComplete' {Maybe Integer
Maybe Text
Maybe DataChecksumAlgorithm
Text
HashedBody
SummaryChecksumAlgorithm
metadataBlob :: HashedBody
objectChecksumAlgorithm :: SummaryChecksumAlgorithm
objectChecksum :: Text
uploadId :: Text
backupJobId :: Text
metadataString :: Maybe Text
metadataBlobLength :: Maybe Integer
metadataBlobChecksumAlgorithm :: Maybe DataChecksumAlgorithm
metadataBlobChecksum :: Maybe Text
$sel:metadataBlob:NotifyObjectComplete' :: NotifyObjectComplete -> HashedBody
$sel:objectChecksumAlgorithm:NotifyObjectComplete' :: NotifyObjectComplete -> SummaryChecksumAlgorithm
$sel:objectChecksum:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:uploadId:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:backupJobId:NotifyObjectComplete' :: NotifyObjectComplete -> Text
$sel:metadataString:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Text
$sel:metadataBlobLength:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Integer
$sel:metadataBlobChecksumAlgorithm:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe DataChecksumAlgorithm
$sel:metadataBlobChecksum:NotifyObjectComplete' :: NotifyObjectComplete -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"metadata-checksum" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
metadataBlobChecksum,
        ByteString
"metadata-checksum-algorithm"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DataChecksumAlgorithm
metadataBlobChecksumAlgorithm,
        ByteString
"metadata-blob-length" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Integer
metadataBlobLength,
        ByteString
"metadata-string" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
metadataString,
        ByteString
"checksum" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
objectChecksum,
        ByteString
"checksum-algorithm" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: SummaryChecksumAlgorithm
objectChecksumAlgorithm
      ]

-- | /See:/ 'newNotifyObjectCompleteResponse' smart constructor.
data NotifyObjectCompleteResponse = NotifyObjectCompleteResponse'
  { -- | The response's http status code.
    NotifyObjectCompleteResponse -> Int
httpStatus :: Prelude.Int,
    -- | Object checksum
    NotifyObjectCompleteResponse -> Text
objectChecksum :: Prelude.Text,
    -- | Checksum algorithm
    NotifyObjectCompleteResponse -> SummaryChecksumAlgorithm
objectChecksumAlgorithm :: SummaryChecksumAlgorithm
  }
  deriving (NotifyObjectCompleteResponse
-> NotifyObjectCompleteResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NotifyObjectCompleteResponse
-> NotifyObjectCompleteResponse -> Bool
$c/= :: NotifyObjectCompleteResponse
-> NotifyObjectCompleteResponse -> Bool
== :: NotifyObjectCompleteResponse
-> NotifyObjectCompleteResponse -> Bool
$c== :: NotifyObjectCompleteResponse
-> NotifyObjectCompleteResponse -> Bool
Prelude.Eq, ReadPrec [NotifyObjectCompleteResponse]
ReadPrec NotifyObjectCompleteResponse
Int -> ReadS NotifyObjectCompleteResponse
ReadS [NotifyObjectCompleteResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [NotifyObjectCompleteResponse]
$creadListPrec :: ReadPrec [NotifyObjectCompleteResponse]
readPrec :: ReadPrec NotifyObjectCompleteResponse
$creadPrec :: ReadPrec NotifyObjectCompleteResponse
readList :: ReadS [NotifyObjectCompleteResponse]
$creadList :: ReadS [NotifyObjectCompleteResponse]
readsPrec :: Int -> ReadS NotifyObjectCompleteResponse
$creadsPrec :: Int -> ReadS NotifyObjectCompleteResponse
Prelude.Read, Int -> NotifyObjectCompleteResponse -> ShowS
[NotifyObjectCompleteResponse] -> ShowS
NotifyObjectCompleteResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NotifyObjectCompleteResponse] -> ShowS
$cshowList :: [NotifyObjectCompleteResponse] -> ShowS
show :: NotifyObjectCompleteResponse -> String
$cshow :: NotifyObjectCompleteResponse -> String
showsPrec :: Int -> NotifyObjectCompleteResponse -> ShowS
$cshowsPrec :: Int -> NotifyObjectCompleteResponse -> ShowS
Prelude.Show, forall x.
Rep NotifyObjectCompleteResponse x -> NotifyObjectCompleteResponse
forall x.
NotifyObjectCompleteResponse -> Rep NotifyObjectCompleteResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep NotifyObjectCompleteResponse x -> NotifyObjectCompleteResponse
$cfrom :: forall x.
NotifyObjectCompleteResponse -> Rep NotifyObjectCompleteResponse x
Prelude.Generic)

-- |
-- Create a value of 'NotifyObjectCompleteResponse' 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:
--
-- 'httpStatus', 'notifyObjectCompleteResponse_httpStatus' - The response's http status code.
--
-- 'objectChecksum', 'notifyObjectCompleteResponse_objectChecksum' - Object checksum
--
-- 'objectChecksumAlgorithm', 'notifyObjectCompleteResponse_objectChecksumAlgorithm' - Checksum algorithm
newNotifyObjectCompleteResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'objectChecksum'
  Prelude.Text ->
  -- | 'objectChecksumAlgorithm'
  SummaryChecksumAlgorithm ->
  NotifyObjectCompleteResponse
newNotifyObjectCompleteResponse :: Int
-> Text -> SummaryChecksumAlgorithm -> NotifyObjectCompleteResponse
newNotifyObjectCompleteResponse
  Int
pHttpStatus_
  Text
pObjectChecksum_
  SummaryChecksumAlgorithm
pObjectChecksumAlgorithm_ =
    NotifyObjectCompleteResponse'
      { $sel:httpStatus:NotifyObjectCompleteResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:objectChecksum:NotifyObjectCompleteResponse' :: Text
objectChecksum = Text
pObjectChecksum_,
        $sel:objectChecksumAlgorithm:NotifyObjectCompleteResponse' :: SummaryChecksumAlgorithm
objectChecksumAlgorithm =
          SummaryChecksumAlgorithm
pObjectChecksumAlgorithm_
      }

-- | The response's http status code.
notifyObjectCompleteResponse_httpStatus :: Lens.Lens' NotifyObjectCompleteResponse Prelude.Int
notifyObjectCompleteResponse_httpStatus :: Lens' NotifyObjectCompleteResponse Int
notifyObjectCompleteResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectCompleteResponse' {Int
httpStatus :: Int
$sel:httpStatus:NotifyObjectCompleteResponse' :: NotifyObjectCompleteResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: NotifyObjectCompleteResponse
s@NotifyObjectCompleteResponse' {} Int
a -> NotifyObjectCompleteResponse
s {$sel:httpStatus:NotifyObjectCompleteResponse' :: Int
httpStatus = Int
a} :: NotifyObjectCompleteResponse)

-- | Object checksum
notifyObjectCompleteResponse_objectChecksum :: Lens.Lens' NotifyObjectCompleteResponse Prelude.Text
notifyObjectCompleteResponse_objectChecksum :: Lens' NotifyObjectCompleteResponse Text
notifyObjectCompleteResponse_objectChecksum = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectCompleteResponse' {Text
objectChecksum :: Text
$sel:objectChecksum:NotifyObjectCompleteResponse' :: NotifyObjectCompleteResponse -> Text
objectChecksum} -> Text
objectChecksum) (\s :: NotifyObjectCompleteResponse
s@NotifyObjectCompleteResponse' {} Text
a -> NotifyObjectCompleteResponse
s {$sel:objectChecksum:NotifyObjectCompleteResponse' :: Text
objectChecksum = Text
a} :: NotifyObjectCompleteResponse)

-- | Checksum algorithm
notifyObjectCompleteResponse_objectChecksumAlgorithm :: Lens.Lens' NotifyObjectCompleteResponse SummaryChecksumAlgorithm
notifyObjectCompleteResponse_objectChecksumAlgorithm :: Lens' NotifyObjectCompleteResponse SummaryChecksumAlgorithm
notifyObjectCompleteResponse_objectChecksumAlgorithm = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NotifyObjectCompleteResponse' {SummaryChecksumAlgorithm
objectChecksumAlgorithm :: SummaryChecksumAlgorithm
$sel:objectChecksumAlgorithm:NotifyObjectCompleteResponse' :: NotifyObjectCompleteResponse -> SummaryChecksumAlgorithm
objectChecksumAlgorithm} -> SummaryChecksumAlgorithm
objectChecksumAlgorithm) (\s :: NotifyObjectCompleteResponse
s@NotifyObjectCompleteResponse' {} SummaryChecksumAlgorithm
a -> NotifyObjectCompleteResponse
s {$sel:objectChecksumAlgorithm:NotifyObjectCompleteResponse' :: SummaryChecksumAlgorithm
objectChecksumAlgorithm = SummaryChecksumAlgorithm
a} :: NotifyObjectCompleteResponse)

instance Prelude.NFData NotifyObjectCompleteResponse where
  rnf :: NotifyObjectCompleteResponse -> ()
rnf NotifyObjectCompleteResponse' {Int
Text
SummaryChecksumAlgorithm
objectChecksumAlgorithm :: SummaryChecksumAlgorithm
objectChecksum :: Text
httpStatus :: Int
$sel:objectChecksumAlgorithm:NotifyObjectCompleteResponse' :: NotifyObjectCompleteResponse -> SummaryChecksumAlgorithm
$sel:objectChecksum:NotifyObjectCompleteResponse' :: NotifyObjectCompleteResponse -> Text
$sel:httpStatus:NotifyObjectCompleteResponse' :: NotifyObjectCompleteResponse -> 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
objectChecksum
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf SummaryChecksumAlgorithm
objectChecksumAlgorithm