{-# 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.ECR.CompleteLayerUpload
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Informs Amazon ECR that the image layer upload has completed for a
-- specified registry, repository name, and upload ID. You can optionally
-- provide a @sha256@ digest of the image layer for data validation
-- purposes.
--
-- When an image is pushed, the CompleteLayerUpload API is called once per
-- each new image layer to verify that the upload has completed.
--
-- This operation is used by the Amazon ECR proxy and is not generally used
-- by customers for pulling and pushing images. In most cases, you should
-- use the @docker@ CLI to pull, tag, and push images.
module Amazonka.ECR.CompleteLayerUpload
  ( -- * Creating a Request
    CompleteLayerUpload (..),
    newCompleteLayerUpload,

    -- * Request Lenses
    completeLayerUpload_registryId,
    completeLayerUpload_repositoryName,
    completeLayerUpload_uploadId,
    completeLayerUpload_layerDigests,

    -- * Destructuring the Response
    CompleteLayerUploadResponse (..),
    newCompleteLayerUploadResponse,

    -- * Response Lenses
    completeLayerUploadResponse_layerDigest,
    completeLayerUploadResponse_registryId,
    completeLayerUploadResponse_repositoryName,
    completeLayerUploadResponse_uploadId,
    completeLayerUploadResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ECR.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newCompleteLayerUpload' smart constructor.
data CompleteLayerUpload = CompleteLayerUpload'
  { -- | The Amazon Web Services account ID associated with the registry to which
    -- to upload layers. If you do not specify a registry, the default registry
    -- is assumed.
    CompleteLayerUpload -> Maybe Text
registryId :: Prelude.Maybe Prelude.Text,
    -- | The name of the repository to associate with the image layer.
    CompleteLayerUpload -> Text
repositoryName :: Prelude.Text,
    -- | The upload ID from a previous InitiateLayerUpload operation to associate
    -- with the image layer.
    CompleteLayerUpload -> Text
uploadId :: Prelude.Text,
    -- | The @sha256@ digest of the image layer.
    CompleteLayerUpload -> NonEmpty Text
layerDigests :: Prelude.NonEmpty Prelude.Text
  }
  deriving (CompleteLayerUpload -> CompleteLayerUpload -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CompleteLayerUpload -> CompleteLayerUpload -> Bool
$c/= :: CompleteLayerUpload -> CompleteLayerUpload -> Bool
== :: CompleteLayerUpload -> CompleteLayerUpload -> Bool
$c== :: CompleteLayerUpload -> CompleteLayerUpload -> Bool
Prelude.Eq, ReadPrec [CompleteLayerUpload]
ReadPrec CompleteLayerUpload
Int -> ReadS CompleteLayerUpload
ReadS [CompleteLayerUpload]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CompleteLayerUpload]
$creadListPrec :: ReadPrec [CompleteLayerUpload]
readPrec :: ReadPrec CompleteLayerUpload
$creadPrec :: ReadPrec CompleteLayerUpload
readList :: ReadS [CompleteLayerUpload]
$creadList :: ReadS [CompleteLayerUpload]
readsPrec :: Int -> ReadS CompleteLayerUpload
$creadsPrec :: Int -> ReadS CompleteLayerUpload
Prelude.Read, Int -> CompleteLayerUpload -> ShowS
[CompleteLayerUpload] -> ShowS
CompleteLayerUpload -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CompleteLayerUpload] -> ShowS
$cshowList :: [CompleteLayerUpload] -> ShowS
show :: CompleteLayerUpload -> String
$cshow :: CompleteLayerUpload -> String
showsPrec :: Int -> CompleteLayerUpload -> ShowS
$cshowsPrec :: Int -> CompleteLayerUpload -> ShowS
Prelude.Show, forall x. Rep CompleteLayerUpload x -> CompleteLayerUpload
forall x. CompleteLayerUpload -> Rep CompleteLayerUpload x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CompleteLayerUpload x -> CompleteLayerUpload
$cfrom :: forall x. CompleteLayerUpload -> Rep CompleteLayerUpload x
Prelude.Generic)

-- |
-- Create a value of 'CompleteLayerUpload' 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:
--
-- 'registryId', 'completeLayerUpload_registryId' - The Amazon Web Services account ID associated with the registry to which
-- to upload layers. If you do not specify a registry, the default registry
-- is assumed.
--
-- 'repositoryName', 'completeLayerUpload_repositoryName' - The name of the repository to associate with the image layer.
--
-- 'uploadId', 'completeLayerUpload_uploadId' - The upload ID from a previous InitiateLayerUpload operation to associate
-- with the image layer.
--
-- 'layerDigests', 'completeLayerUpload_layerDigests' - The @sha256@ digest of the image layer.
newCompleteLayerUpload ::
  -- | 'repositoryName'
  Prelude.Text ->
  -- | 'uploadId'
  Prelude.Text ->
  -- | 'layerDigests'
  Prelude.NonEmpty Prelude.Text ->
  CompleteLayerUpload
newCompleteLayerUpload :: Text -> Text -> NonEmpty Text -> CompleteLayerUpload
newCompleteLayerUpload
  Text
pRepositoryName_
  Text
pUploadId_
  NonEmpty Text
pLayerDigests_ =
    CompleteLayerUpload'
      { $sel:registryId:CompleteLayerUpload' :: Maybe Text
registryId = forall a. Maybe a
Prelude.Nothing,
        $sel:repositoryName:CompleteLayerUpload' :: Text
repositoryName = Text
pRepositoryName_,
        $sel:uploadId:CompleteLayerUpload' :: Text
uploadId = Text
pUploadId_,
        $sel:layerDigests:CompleteLayerUpload' :: NonEmpty Text
layerDigests = forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty Text
pLayerDigests_
      }

-- | The Amazon Web Services account ID associated with the registry to which
-- to upload layers. If you do not specify a registry, the default registry
-- is assumed.
completeLayerUpload_registryId :: Lens.Lens' CompleteLayerUpload (Prelude.Maybe Prelude.Text)
completeLayerUpload_registryId :: Lens' CompleteLayerUpload (Maybe Text)
completeLayerUpload_registryId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CompleteLayerUpload' {Maybe Text
registryId :: Maybe Text
$sel:registryId:CompleteLayerUpload' :: CompleteLayerUpload -> Maybe Text
registryId} -> Maybe Text
registryId) (\s :: CompleteLayerUpload
s@CompleteLayerUpload' {} Maybe Text
a -> CompleteLayerUpload
s {$sel:registryId:CompleteLayerUpload' :: Maybe Text
registryId = Maybe Text
a} :: CompleteLayerUpload)

-- | The name of the repository to associate with the image layer.
completeLayerUpload_repositoryName :: Lens.Lens' CompleteLayerUpload Prelude.Text
completeLayerUpload_repositoryName :: Lens' CompleteLayerUpload Text
completeLayerUpload_repositoryName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CompleteLayerUpload' {Text
repositoryName :: Text
$sel:repositoryName:CompleteLayerUpload' :: CompleteLayerUpload -> Text
repositoryName} -> Text
repositoryName) (\s :: CompleteLayerUpload
s@CompleteLayerUpload' {} Text
a -> CompleteLayerUpload
s {$sel:repositoryName:CompleteLayerUpload' :: Text
repositoryName = Text
a} :: CompleteLayerUpload)

-- | The upload ID from a previous InitiateLayerUpload operation to associate
-- with the image layer.
completeLayerUpload_uploadId :: Lens.Lens' CompleteLayerUpload Prelude.Text
completeLayerUpload_uploadId :: Lens' CompleteLayerUpload Text
completeLayerUpload_uploadId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CompleteLayerUpload' {Text
uploadId :: Text
$sel:uploadId:CompleteLayerUpload' :: CompleteLayerUpload -> Text
uploadId} -> Text
uploadId) (\s :: CompleteLayerUpload
s@CompleteLayerUpload' {} Text
a -> CompleteLayerUpload
s {$sel:uploadId:CompleteLayerUpload' :: Text
uploadId = Text
a} :: CompleteLayerUpload)

-- | The @sha256@ digest of the image layer.
completeLayerUpload_layerDigests :: Lens.Lens' CompleteLayerUpload (Prelude.NonEmpty Prelude.Text)
completeLayerUpload_layerDigests :: Lens' CompleteLayerUpload (NonEmpty Text)
completeLayerUpload_layerDigests = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CompleteLayerUpload' {NonEmpty Text
layerDigests :: NonEmpty Text
$sel:layerDigests:CompleteLayerUpload' :: CompleteLayerUpload -> NonEmpty Text
layerDigests} -> NonEmpty Text
layerDigests) (\s :: CompleteLayerUpload
s@CompleteLayerUpload' {} NonEmpty Text
a -> CompleteLayerUpload
s {$sel:layerDigests:CompleteLayerUpload' :: NonEmpty Text
layerDigests = NonEmpty Text
a} :: CompleteLayerUpload) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.AWSRequest CompleteLayerUpload where
  type
    AWSResponse CompleteLayerUpload =
      CompleteLayerUploadResponse
  request :: (Service -> Service)
-> CompleteLayerUpload -> Request CompleteLayerUpload
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CompleteLayerUpload
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CompleteLayerUpload)))
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 ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> CompleteLayerUploadResponse
CompleteLayerUploadResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"layerDigest")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"registryId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"repositoryName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"uploadId")
            forall (f :: * -> *) a b. Applicative f => 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))
      )

instance Prelude.Hashable CompleteLayerUpload where
  hashWithSalt :: Int -> CompleteLayerUpload -> Int
hashWithSalt Int
_salt CompleteLayerUpload' {Maybe Text
NonEmpty Text
Text
layerDigests :: NonEmpty Text
uploadId :: Text
repositoryName :: Text
registryId :: Maybe Text
$sel:layerDigests:CompleteLayerUpload' :: CompleteLayerUpload -> NonEmpty Text
$sel:uploadId:CompleteLayerUpload' :: CompleteLayerUpload -> Text
$sel:repositoryName:CompleteLayerUpload' :: CompleteLayerUpload -> Text
$sel:registryId:CompleteLayerUpload' :: CompleteLayerUpload -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
registryId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
repositoryName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
uploadId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty Text
layerDigests

instance Prelude.NFData CompleteLayerUpload where
  rnf :: CompleteLayerUpload -> ()
rnf CompleteLayerUpload' {Maybe Text
NonEmpty Text
Text
layerDigests :: NonEmpty Text
uploadId :: Text
repositoryName :: Text
registryId :: Maybe Text
$sel:layerDigests:CompleteLayerUpload' :: CompleteLayerUpload -> NonEmpty Text
$sel:uploadId:CompleteLayerUpload' :: CompleteLayerUpload -> Text
$sel:repositoryName:CompleteLayerUpload' :: CompleteLayerUpload -> Text
$sel:registryId:CompleteLayerUpload' :: CompleteLayerUpload -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
registryId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
repositoryName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
uploadId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty Text
layerDigests

instance Data.ToHeaders CompleteLayerUpload where
  toHeaders :: CompleteLayerUpload -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AmazonEC2ContainerRegistry_V20150921.CompleteLayerUpload" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CompleteLayerUpload where
  toJSON :: CompleteLayerUpload -> Value
toJSON CompleteLayerUpload' {Maybe Text
NonEmpty Text
Text
layerDigests :: NonEmpty Text
uploadId :: Text
repositoryName :: Text
registryId :: Maybe Text
$sel:layerDigests:CompleteLayerUpload' :: CompleteLayerUpload -> NonEmpty Text
$sel:uploadId:CompleteLayerUpload' :: CompleteLayerUpload -> Text
$sel:repositoryName:CompleteLayerUpload' :: CompleteLayerUpload -> Text
$sel:registryId:CompleteLayerUpload' :: CompleteLayerUpload -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"registryId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
registryId,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"repositoryName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
repositoryName),
            forall a. a -> Maybe a
Prelude.Just (Key
"uploadId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
uploadId),
            forall a. a -> Maybe a
Prelude.Just (Key
"layerDigests" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty Text
layerDigests)
          ]
      )

instance Data.ToPath CompleteLayerUpload where
  toPath :: CompleteLayerUpload -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery CompleteLayerUpload where
  toQuery :: CompleteLayerUpload -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newCompleteLayerUploadResponse' smart constructor.
data CompleteLayerUploadResponse = CompleteLayerUploadResponse'
  { -- | The @sha256@ digest of the image layer.
    CompleteLayerUploadResponse -> Maybe Text
layerDigest :: Prelude.Maybe Prelude.Text,
    -- | The registry ID associated with the request.
    CompleteLayerUploadResponse -> Maybe Text
registryId :: Prelude.Maybe Prelude.Text,
    -- | The repository name associated with the request.
    CompleteLayerUploadResponse -> Maybe Text
repositoryName :: Prelude.Maybe Prelude.Text,
    -- | The upload ID associated with the layer.
    CompleteLayerUploadResponse -> Maybe Text
uploadId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CompleteLayerUploadResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CompleteLayerUploadResponse -> CompleteLayerUploadResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CompleteLayerUploadResponse -> CompleteLayerUploadResponse -> Bool
$c/= :: CompleteLayerUploadResponse -> CompleteLayerUploadResponse -> Bool
== :: CompleteLayerUploadResponse -> CompleteLayerUploadResponse -> Bool
$c== :: CompleteLayerUploadResponse -> CompleteLayerUploadResponse -> Bool
Prelude.Eq, ReadPrec [CompleteLayerUploadResponse]
ReadPrec CompleteLayerUploadResponse
Int -> ReadS CompleteLayerUploadResponse
ReadS [CompleteLayerUploadResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CompleteLayerUploadResponse]
$creadListPrec :: ReadPrec [CompleteLayerUploadResponse]
readPrec :: ReadPrec CompleteLayerUploadResponse
$creadPrec :: ReadPrec CompleteLayerUploadResponse
readList :: ReadS [CompleteLayerUploadResponse]
$creadList :: ReadS [CompleteLayerUploadResponse]
readsPrec :: Int -> ReadS CompleteLayerUploadResponse
$creadsPrec :: Int -> ReadS CompleteLayerUploadResponse
Prelude.Read, Int -> CompleteLayerUploadResponse -> ShowS
[CompleteLayerUploadResponse] -> ShowS
CompleteLayerUploadResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CompleteLayerUploadResponse] -> ShowS
$cshowList :: [CompleteLayerUploadResponse] -> ShowS
show :: CompleteLayerUploadResponse -> String
$cshow :: CompleteLayerUploadResponse -> String
showsPrec :: Int -> CompleteLayerUploadResponse -> ShowS
$cshowsPrec :: Int -> CompleteLayerUploadResponse -> ShowS
Prelude.Show, forall x.
Rep CompleteLayerUploadResponse x -> CompleteLayerUploadResponse
forall x.
CompleteLayerUploadResponse -> Rep CompleteLayerUploadResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CompleteLayerUploadResponse x -> CompleteLayerUploadResponse
$cfrom :: forall x.
CompleteLayerUploadResponse -> Rep CompleteLayerUploadResponse x
Prelude.Generic)

-- |
-- Create a value of 'CompleteLayerUploadResponse' 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:
--
-- 'layerDigest', 'completeLayerUploadResponse_layerDigest' - The @sha256@ digest of the image layer.
--
-- 'registryId', 'completeLayerUploadResponse_registryId' - The registry ID associated with the request.
--
-- 'repositoryName', 'completeLayerUploadResponse_repositoryName' - The repository name associated with the request.
--
-- 'uploadId', 'completeLayerUploadResponse_uploadId' - The upload ID associated with the layer.
--
-- 'httpStatus', 'completeLayerUploadResponse_httpStatus' - The response's http status code.
newCompleteLayerUploadResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CompleteLayerUploadResponse
newCompleteLayerUploadResponse :: Int -> CompleteLayerUploadResponse
newCompleteLayerUploadResponse Int
pHttpStatus_ =
  CompleteLayerUploadResponse'
    { $sel:layerDigest:CompleteLayerUploadResponse' :: Maybe Text
layerDigest =
        forall a. Maybe a
Prelude.Nothing,
      $sel:registryId:CompleteLayerUploadResponse' :: Maybe Text
registryId = forall a. Maybe a
Prelude.Nothing,
      $sel:repositoryName:CompleteLayerUploadResponse' :: Maybe Text
repositoryName = forall a. Maybe a
Prelude.Nothing,
      $sel:uploadId:CompleteLayerUploadResponse' :: Maybe Text
uploadId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CompleteLayerUploadResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The @sha256@ digest of the image layer.
completeLayerUploadResponse_layerDigest :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)
completeLayerUploadResponse_layerDigest :: Lens' CompleteLayerUploadResponse (Maybe Text)
completeLayerUploadResponse_layerDigest = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CompleteLayerUploadResponse' {Maybe Text
layerDigest :: Maybe Text
$sel:layerDigest:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Maybe Text
layerDigest} -> Maybe Text
layerDigest) (\s :: CompleteLayerUploadResponse
s@CompleteLayerUploadResponse' {} Maybe Text
a -> CompleteLayerUploadResponse
s {$sel:layerDigest:CompleteLayerUploadResponse' :: Maybe Text
layerDigest = Maybe Text
a} :: CompleteLayerUploadResponse)

-- | The registry ID associated with the request.
completeLayerUploadResponse_registryId :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)
completeLayerUploadResponse_registryId :: Lens' CompleteLayerUploadResponse (Maybe Text)
completeLayerUploadResponse_registryId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CompleteLayerUploadResponse' {Maybe Text
registryId :: Maybe Text
$sel:registryId:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Maybe Text
registryId} -> Maybe Text
registryId) (\s :: CompleteLayerUploadResponse
s@CompleteLayerUploadResponse' {} Maybe Text
a -> CompleteLayerUploadResponse
s {$sel:registryId:CompleteLayerUploadResponse' :: Maybe Text
registryId = Maybe Text
a} :: CompleteLayerUploadResponse)

-- | The repository name associated with the request.
completeLayerUploadResponse_repositoryName :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)
completeLayerUploadResponse_repositoryName :: Lens' CompleteLayerUploadResponse (Maybe Text)
completeLayerUploadResponse_repositoryName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CompleteLayerUploadResponse' {Maybe Text
repositoryName :: Maybe Text
$sel:repositoryName:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Maybe Text
repositoryName} -> Maybe Text
repositoryName) (\s :: CompleteLayerUploadResponse
s@CompleteLayerUploadResponse' {} Maybe Text
a -> CompleteLayerUploadResponse
s {$sel:repositoryName:CompleteLayerUploadResponse' :: Maybe Text
repositoryName = Maybe Text
a} :: CompleteLayerUploadResponse)

-- | The upload ID associated with the layer.
completeLayerUploadResponse_uploadId :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)
completeLayerUploadResponse_uploadId :: Lens' CompleteLayerUploadResponse (Maybe Text)
completeLayerUploadResponse_uploadId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CompleteLayerUploadResponse' {Maybe Text
uploadId :: Maybe Text
$sel:uploadId:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Maybe Text
uploadId} -> Maybe Text
uploadId) (\s :: CompleteLayerUploadResponse
s@CompleteLayerUploadResponse' {} Maybe Text
a -> CompleteLayerUploadResponse
s {$sel:uploadId:CompleteLayerUploadResponse' :: Maybe Text
uploadId = Maybe Text
a} :: CompleteLayerUploadResponse)

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

instance Prelude.NFData CompleteLayerUploadResponse where
  rnf :: CompleteLayerUploadResponse -> ()
rnf CompleteLayerUploadResponse' {Int
Maybe Text
httpStatus :: Int
uploadId :: Maybe Text
repositoryName :: Maybe Text
registryId :: Maybe Text
layerDigest :: Maybe Text
$sel:httpStatus:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Int
$sel:uploadId:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Maybe Text
$sel:repositoryName:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Maybe Text
$sel:registryId:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Maybe Text
$sel:layerDigest:CompleteLayerUploadResponse' :: CompleteLayerUploadResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
layerDigest
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
registryId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
repositoryName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
uploadId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus