{-# 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.ECRPublic.PutRegistryCatalogData
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Create or updates the catalog data for a public registry.
module Amazonka.ECRPublic.PutRegistryCatalogData
  ( -- * Creating a Request
    PutRegistryCatalogData (..),
    newPutRegistryCatalogData,

    -- * Request Lenses
    putRegistryCatalogData_displayName,

    -- * Destructuring the Response
    PutRegistryCatalogDataResponse (..),
    newPutRegistryCatalogDataResponse,

    -- * Response Lenses
    putRegistryCatalogDataResponse_httpStatus,
    putRegistryCatalogDataResponse_registryCatalogData,
  )
where

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

-- | /See:/ 'newPutRegistryCatalogData' smart constructor.
data PutRegistryCatalogData = PutRegistryCatalogData'
  { -- | The display name for a public registry. The display name is shown as the
    -- repository author in the Amazon ECR Public Gallery.
    --
    -- The registry display name is only publicly visible in the Amazon ECR
    -- Public Gallery for verified accounts.
    PutRegistryCatalogData -> Maybe Text
displayName :: Prelude.Maybe Prelude.Text
  }
  deriving (PutRegistryCatalogData -> PutRegistryCatalogData -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutRegistryCatalogData -> PutRegistryCatalogData -> Bool
$c/= :: PutRegistryCatalogData -> PutRegistryCatalogData -> Bool
== :: PutRegistryCatalogData -> PutRegistryCatalogData -> Bool
$c== :: PutRegistryCatalogData -> PutRegistryCatalogData -> Bool
Prelude.Eq, ReadPrec [PutRegistryCatalogData]
ReadPrec PutRegistryCatalogData
Int -> ReadS PutRegistryCatalogData
ReadS [PutRegistryCatalogData]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PutRegistryCatalogData]
$creadListPrec :: ReadPrec [PutRegistryCatalogData]
readPrec :: ReadPrec PutRegistryCatalogData
$creadPrec :: ReadPrec PutRegistryCatalogData
readList :: ReadS [PutRegistryCatalogData]
$creadList :: ReadS [PutRegistryCatalogData]
readsPrec :: Int -> ReadS PutRegistryCatalogData
$creadsPrec :: Int -> ReadS PutRegistryCatalogData
Prelude.Read, Int -> PutRegistryCatalogData -> ShowS
[PutRegistryCatalogData] -> ShowS
PutRegistryCatalogData -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutRegistryCatalogData] -> ShowS
$cshowList :: [PutRegistryCatalogData] -> ShowS
show :: PutRegistryCatalogData -> String
$cshow :: PutRegistryCatalogData -> String
showsPrec :: Int -> PutRegistryCatalogData -> ShowS
$cshowsPrec :: Int -> PutRegistryCatalogData -> ShowS
Prelude.Show, forall x. Rep PutRegistryCatalogData x -> PutRegistryCatalogData
forall x. PutRegistryCatalogData -> Rep PutRegistryCatalogData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PutRegistryCatalogData x -> PutRegistryCatalogData
$cfrom :: forall x. PutRegistryCatalogData -> Rep PutRegistryCatalogData x
Prelude.Generic)

-- |
-- Create a value of 'PutRegistryCatalogData' 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:
--
-- 'displayName', 'putRegistryCatalogData_displayName' - The display name for a public registry. The display name is shown as the
-- repository author in the Amazon ECR Public Gallery.
--
-- The registry display name is only publicly visible in the Amazon ECR
-- Public Gallery for verified accounts.
newPutRegistryCatalogData ::
  PutRegistryCatalogData
newPutRegistryCatalogData :: PutRegistryCatalogData
newPutRegistryCatalogData =
  PutRegistryCatalogData'
    { $sel:displayName:PutRegistryCatalogData' :: Maybe Text
displayName =
        forall a. Maybe a
Prelude.Nothing
    }

-- | The display name for a public registry. The display name is shown as the
-- repository author in the Amazon ECR Public Gallery.
--
-- The registry display name is only publicly visible in the Amazon ECR
-- Public Gallery for verified accounts.
putRegistryCatalogData_displayName :: Lens.Lens' PutRegistryCatalogData (Prelude.Maybe Prelude.Text)
putRegistryCatalogData_displayName :: Lens' PutRegistryCatalogData (Maybe Text)
putRegistryCatalogData_displayName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutRegistryCatalogData' {Maybe Text
displayName :: Maybe Text
$sel:displayName:PutRegistryCatalogData' :: PutRegistryCatalogData -> Maybe Text
displayName} -> Maybe Text
displayName) (\s :: PutRegistryCatalogData
s@PutRegistryCatalogData' {} Maybe Text
a -> PutRegistryCatalogData
s {$sel:displayName:PutRegistryCatalogData' :: Maybe Text
displayName = Maybe Text
a} :: PutRegistryCatalogData)

instance Core.AWSRequest PutRegistryCatalogData where
  type
    AWSResponse PutRegistryCatalogData =
      PutRegistryCatalogDataResponse
  request :: (Service -> Service)
-> PutRegistryCatalogData -> Request PutRegistryCatalogData
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 PutRegistryCatalogData
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse PutRegistryCatalogData)))
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 -> RegistryCatalogData -> PutRegistryCatalogDataResponse
PutRegistryCatalogDataResponse'
            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
"registryCatalogData")
      )

instance Prelude.Hashable PutRegistryCatalogData where
  hashWithSalt :: Int -> PutRegistryCatalogData -> Int
hashWithSalt Int
_salt PutRegistryCatalogData' {Maybe Text
displayName :: Maybe Text
$sel:displayName:PutRegistryCatalogData' :: PutRegistryCatalogData -> Maybe Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
displayName

instance Prelude.NFData PutRegistryCatalogData where
  rnf :: PutRegistryCatalogData -> ()
rnf PutRegistryCatalogData' {Maybe Text
displayName :: Maybe Text
$sel:displayName:PutRegistryCatalogData' :: PutRegistryCatalogData -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
displayName

instance Data.ToHeaders PutRegistryCatalogData where
  toHeaders :: PutRegistryCatalogData -> 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
"SpencerFrontendService.PutRegistryCatalogData" ::
                          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 PutRegistryCatalogData where
  toJSON :: PutRegistryCatalogData -> Value
toJSON PutRegistryCatalogData' {Maybe Text
displayName :: Maybe Text
$sel:displayName:PutRegistryCatalogData' :: PutRegistryCatalogData -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [(Key
"displayName" 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
displayName]
      )

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

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

-- | /See:/ 'newPutRegistryCatalogDataResponse' smart constructor.
data PutRegistryCatalogDataResponse = PutRegistryCatalogDataResponse'
  { -- | The response's http status code.
    PutRegistryCatalogDataResponse -> Int
httpStatus :: Prelude.Int,
    -- | The catalog data for the public registry.
    PutRegistryCatalogDataResponse -> RegistryCatalogData
registryCatalogData :: RegistryCatalogData
  }
  deriving (PutRegistryCatalogDataResponse
-> PutRegistryCatalogDataResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutRegistryCatalogDataResponse
-> PutRegistryCatalogDataResponse -> Bool
$c/= :: PutRegistryCatalogDataResponse
-> PutRegistryCatalogDataResponse -> Bool
== :: PutRegistryCatalogDataResponse
-> PutRegistryCatalogDataResponse -> Bool
$c== :: PutRegistryCatalogDataResponse
-> PutRegistryCatalogDataResponse -> Bool
Prelude.Eq, ReadPrec [PutRegistryCatalogDataResponse]
ReadPrec PutRegistryCatalogDataResponse
Int -> ReadS PutRegistryCatalogDataResponse
ReadS [PutRegistryCatalogDataResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PutRegistryCatalogDataResponse]
$creadListPrec :: ReadPrec [PutRegistryCatalogDataResponse]
readPrec :: ReadPrec PutRegistryCatalogDataResponse
$creadPrec :: ReadPrec PutRegistryCatalogDataResponse
readList :: ReadS [PutRegistryCatalogDataResponse]
$creadList :: ReadS [PutRegistryCatalogDataResponse]
readsPrec :: Int -> ReadS PutRegistryCatalogDataResponse
$creadsPrec :: Int -> ReadS PutRegistryCatalogDataResponse
Prelude.Read, Int -> PutRegistryCatalogDataResponse -> ShowS
[PutRegistryCatalogDataResponse] -> ShowS
PutRegistryCatalogDataResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutRegistryCatalogDataResponse] -> ShowS
$cshowList :: [PutRegistryCatalogDataResponse] -> ShowS
show :: PutRegistryCatalogDataResponse -> String
$cshow :: PutRegistryCatalogDataResponse -> String
showsPrec :: Int -> PutRegistryCatalogDataResponse -> ShowS
$cshowsPrec :: Int -> PutRegistryCatalogDataResponse -> ShowS
Prelude.Show, forall x.
Rep PutRegistryCatalogDataResponse x
-> PutRegistryCatalogDataResponse
forall x.
PutRegistryCatalogDataResponse
-> Rep PutRegistryCatalogDataResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PutRegistryCatalogDataResponse x
-> PutRegistryCatalogDataResponse
$cfrom :: forall x.
PutRegistryCatalogDataResponse
-> Rep PutRegistryCatalogDataResponse x
Prelude.Generic)

-- |
-- Create a value of 'PutRegistryCatalogDataResponse' 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', 'putRegistryCatalogDataResponse_httpStatus' - The response's http status code.
--
-- 'registryCatalogData', 'putRegistryCatalogDataResponse_registryCatalogData' - The catalog data for the public registry.
newPutRegistryCatalogDataResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'registryCatalogData'
  RegistryCatalogData ->
  PutRegistryCatalogDataResponse
newPutRegistryCatalogDataResponse :: Int -> RegistryCatalogData -> PutRegistryCatalogDataResponse
newPutRegistryCatalogDataResponse
  Int
pHttpStatus_
  RegistryCatalogData
pRegistryCatalogData_ =
    PutRegistryCatalogDataResponse'
      { $sel:httpStatus:PutRegistryCatalogDataResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:registryCatalogData:PutRegistryCatalogDataResponse' :: RegistryCatalogData
registryCatalogData = RegistryCatalogData
pRegistryCatalogData_
      }

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

-- | The catalog data for the public registry.
putRegistryCatalogDataResponse_registryCatalogData :: Lens.Lens' PutRegistryCatalogDataResponse RegistryCatalogData
putRegistryCatalogDataResponse_registryCatalogData :: Lens' PutRegistryCatalogDataResponse RegistryCatalogData
putRegistryCatalogDataResponse_registryCatalogData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutRegistryCatalogDataResponse' {RegistryCatalogData
registryCatalogData :: RegistryCatalogData
$sel:registryCatalogData:PutRegistryCatalogDataResponse' :: PutRegistryCatalogDataResponse -> RegistryCatalogData
registryCatalogData} -> RegistryCatalogData
registryCatalogData) (\s :: PutRegistryCatalogDataResponse
s@PutRegistryCatalogDataResponse' {} RegistryCatalogData
a -> PutRegistryCatalogDataResponse
s {$sel:registryCatalogData:PutRegistryCatalogDataResponse' :: RegistryCatalogData
registryCatalogData = RegistryCatalogData
a} :: PutRegistryCatalogDataResponse)

instance
  Prelude.NFData
    PutRegistryCatalogDataResponse
  where
  rnf :: PutRegistryCatalogDataResponse -> ()
rnf PutRegistryCatalogDataResponse' {Int
RegistryCatalogData
registryCatalogData :: RegistryCatalogData
httpStatus :: Int
$sel:registryCatalogData:PutRegistryCatalogDataResponse' :: PutRegistryCatalogDataResponse -> RegistryCatalogData
$sel:httpStatus:PutRegistryCatalogDataResponse' :: PutRegistryCatalogDataResponse -> 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 RegistryCatalogData
registryCatalogData