{-# 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.DescribeRepositories
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes image repositories in a registry.
--
-- This operation returns paginated results.
module Amazonka.ECR.DescribeRepositories
  ( -- * Creating a Request
    DescribeRepositories (..),
    newDescribeRepositories,

    -- * Request Lenses
    describeRepositories_maxResults,
    describeRepositories_nextToken,
    describeRepositories_registryId,
    describeRepositories_repositoryNames,

    -- * Destructuring the Response
    DescribeRepositoriesResponse (..),
    newDescribeRepositoriesResponse,

    -- * Response Lenses
    describeRepositoriesResponse_nextToken,
    describeRepositoriesResponse_repositories,
    describeRepositoriesResponse_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:/ 'newDescribeRepositories' smart constructor.
data DescribeRepositories = DescribeRepositories'
  { -- | The maximum number of repository results returned by
    -- @DescribeRepositories@ in paginated output. When this parameter is used,
    -- @DescribeRepositories@ only returns @maxResults@ results in a single
    -- page along with a @nextToken@ response element. The remaining results of
    -- the initial request can be seen by sending another
    -- @DescribeRepositories@ request with the returned @nextToken@ value. This
    -- value can be between 1 and 1000. If this parameter is not used, then
    -- @DescribeRepositories@ returns up to 100 results and a @nextToken@
    -- value, if applicable. This option cannot be used when you specify
    -- repositories with @repositoryNames@.
    DescribeRepositories -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The @nextToken@ value returned from a previous paginated
    -- @DescribeRepositories@ request where @maxResults@ was used and the
    -- results exceeded the value of that parameter. Pagination continues from
    -- the end of the previous results that returned the @nextToken@ value.
    -- This value is @null@ when there are no more results to return. This
    -- option cannot be used when you specify repositories with
    -- @repositoryNames@.
    --
    -- This token should be treated as an opaque identifier that is only used
    -- to retrieve the next items in a list and not for other programmatic
    -- purposes.
    DescribeRepositories -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services account ID associated with the registry that
    -- contains the repositories to be described. If you do not specify a
    -- registry, the default registry is assumed.
    DescribeRepositories -> Maybe Text
registryId :: Prelude.Maybe Prelude.Text,
    -- | A list of repositories to describe. If this parameter is omitted, then
    -- all repositories in a registry are described.
    DescribeRepositories -> Maybe (NonEmpty Text)
repositoryNames :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
  }
  deriving (DescribeRepositories -> DescribeRepositories -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRepositories -> DescribeRepositories -> Bool
$c/= :: DescribeRepositories -> DescribeRepositories -> Bool
== :: DescribeRepositories -> DescribeRepositories -> Bool
$c== :: DescribeRepositories -> DescribeRepositories -> Bool
Prelude.Eq, ReadPrec [DescribeRepositories]
ReadPrec DescribeRepositories
Int -> ReadS DescribeRepositories
ReadS [DescribeRepositories]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeRepositories]
$creadListPrec :: ReadPrec [DescribeRepositories]
readPrec :: ReadPrec DescribeRepositories
$creadPrec :: ReadPrec DescribeRepositories
readList :: ReadS [DescribeRepositories]
$creadList :: ReadS [DescribeRepositories]
readsPrec :: Int -> ReadS DescribeRepositories
$creadsPrec :: Int -> ReadS DescribeRepositories
Prelude.Read, Int -> DescribeRepositories -> ShowS
[DescribeRepositories] -> ShowS
DescribeRepositories -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRepositories] -> ShowS
$cshowList :: [DescribeRepositories] -> ShowS
show :: DescribeRepositories -> String
$cshow :: DescribeRepositories -> String
showsPrec :: Int -> DescribeRepositories -> ShowS
$cshowsPrec :: Int -> DescribeRepositories -> ShowS
Prelude.Show, forall x. Rep DescribeRepositories x -> DescribeRepositories
forall x. DescribeRepositories -> Rep DescribeRepositories x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeRepositories x -> DescribeRepositories
$cfrom :: forall x. DescribeRepositories -> Rep DescribeRepositories x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRepositories' 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:
--
-- 'maxResults', 'describeRepositories_maxResults' - The maximum number of repository results returned by
-- @DescribeRepositories@ in paginated output. When this parameter is used,
-- @DescribeRepositories@ only returns @maxResults@ results in a single
-- page along with a @nextToken@ response element. The remaining results of
-- the initial request can be seen by sending another
-- @DescribeRepositories@ request with the returned @nextToken@ value. This
-- value can be between 1 and 1000. If this parameter is not used, then
-- @DescribeRepositories@ returns up to 100 results and a @nextToken@
-- value, if applicable. This option cannot be used when you specify
-- repositories with @repositoryNames@.
--
-- 'nextToken', 'describeRepositories_nextToken' - The @nextToken@ value returned from a previous paginated
-- @DescribeRepositories@ request where @maxResults@ was used and the
-- results exceeded the value of that parameter. Pagination continues from
-- the end of the previous results that returned the @nextToken@ value.
-- This value is @null@ when there are no more results to return. This
-- option cannot be used when you specify repositories with
-- @repositoryNames@.
--
-- This token should be treated as an opaque identifier that is only used
-- to retrieve the next items in a list and not for other programmatic
-- purposes.
--
-- 'registryId', 'describeRepositories_registryId' - The Amazon Web Services account ID associated with the registry that
-- contains the repositories to be described. If you do not specify a
-- registry, the default registry is assumed.
--
-- 'repositoryNames', 'describeRepositories_repositoryNames' - A list of repositories to describe. If this parameter is omitted, then
-- all repositories in a registry are described.
newDescribeRepositories ::
  DescribeRepositories
newDescribeRepositories :: DescribeRepositories
newDescribeRepositories =
  DescribeRepositories'
    { $sel:maxResults:DescribeRepositories' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeRepositories' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:registryId:DescribeRepositories' :: Maybe Text
registryId = forall a. Maybe a
Prelude.Nothing,
      $sel:repositoryNames:DescribeRepositories' :: Maybe (NonEmpty Text)
repositoryNames = forall a. Maybe a
Prelude.Nothing
    }

-- | The maximum number of repository results returned by
-- @DescribeRepositories@ in paginated output. When this parameter is used,
-- @DescribeRepositories@ only returns @maxResults@ results in a single
-- page along with a @nextToken@ response element. The remaining results of
-- the initial request can be seen by sending another
-- @DescribeRepositories@ request with the returned @nextToken@ value. This
-- value can be between 1 and 1000. If this parameter is not used, then
-- @DescribeRepositories@ returns up to 100 results and a @nextToken@
-- value, if applicable. This option cannot be used when you specify
-- repositories with @repositoryNames@.
describeRepositories_maxResults :: Lens.Lens' DescribeRepositories (Prelude.Maybe Prelude.Natural)
describeRepositories_maxResults :: Lens' DescribeRepositories (Maybe Natural)
describeRepositories_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRepositories' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeRepositories' :: DescribeRepositories -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeRepositories
s@DescribeRepositories' {} Maybe Natural
a -> DescribeRepositories
s {$sel:maxResults:DescribeRepositories' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeRepositories)

-- | The @nextToken@ value returned from a previous paginated
-- @DescribeRepositories@ request where @maxResults@ was used and the
-- results exceeded the value of that parameter. Pagination continues from
-- the end of the previous results that returned the @nextToken@ value.
-- This value is @null@ when there are no more results to return. This
-- option cannot be used when you specify repositories with
-- @repositoryNames@.
--
-- This token should be treated as an opaque identifier that is only used
-- to retrieve the next items in a list and not for other programmatic
-- purposes.
describeRepositories_nextToken :: Lens.Lens' DescribeRepositories (Prelude.Maybe Prelude.Text)
describeRepositories_nextToken :: Lens' DescribeRepositories (Maybe Text)
describeRepositories_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRepositories' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeRepositories' :: DescribeRepositories -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeRepositories
s@DescribeRepositories' {} Maybe Text
a -> DescribeRepositories
s {$sel:nextToken:DescribeRepositories' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeRepositories)

-- | The Amazon Web Services account ID associated with the registry that
-- contains the repositories to be described. If you do not specify a
-- registry, the default registry is assumed.
describeRepositories_registryId :: Lens.Lens' DescribeRepositories (Prelude.Maybe Prelude.Text)
describeRepositories_registryId :: Lens' DescribeRepositories (Maybe Text)
describeRepositories_registryId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRepositories' {Maybe Text
registryId :: Maybe Text
$sel:registryId:DescribeRepositories' :: DescribeRepositories -> Maybe Text
registryId} -> Maybe Text
registryId) (\s :: DescribeRepositories
s@DescribeRepositories' {} Maybe Text
a -> DescribeRepositories
s {$sel:registryId:DescribeRepositories' :: Maybe Text
registryId = Maybe Text
a} :: DescribeRepositories)

-- | A list of repositories to describe. If this parameter is omitted, then
-- all repositories in a registry are described.
describeRepositories_repositoryNames :: Lens.Lens' DescribeRepositories (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
describeRepositories_repositoryNames :: Lens' DescribeRepositories (Maybe (NonEmpty Text))
describeRepositories_repositoryNames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRepositories' {Maybe (NonEmpty Text)
repositoryNames :: Maybe (NonEmpty Text)
$sel:repositoryNames:DescribeRepositories' :: DescribeRepositories -> Maybe (NonEmpty Text)
repositoryNames} -> Maybe (NonEmpty Text)
repositoryNames) (\s :: DescribeRepositories
s@DescribeRepositories' {} Maybe (NonEmpty Text)
a -> DescribeRepositories
s {$sel:repositoryNames:DescribeRepositories' :: Maybe (NonEmpty Text)
repositoryNames = Maybe (NonEmpty Text)
a} :: DescribeRepositories) 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 Core.AWSPager DescribeRepositories where
  page :: DescribeRepositories
-> AWSResponse DescribeRepositories -> Maybe DescribeRepositories
page DescribeRepositories
rq AWSResponse DescribeRepositories
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeRepositories
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRepositoriesResponse (Maybe Text)
describeRepositoriesResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeRepositories
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRepositoriesResponse (Maybe [Repository])
describeRepositoriesResponse_repositories
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeRepositories
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeRepositories (Maybe Text)
describeRepositories_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeRepositories
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRepositoriesResponse (Maybe Text)
describeRepositoriesResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeRepositories where
  type
    AWSResponse DescribeRepositories =
      DescribeRepositoriesResponse
  request :: (Service -> Service)
-> DescribeRepositories -> Request DescribeRepositories
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 DescribeRepositories
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeRepositories)))
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 [Repository] -> Int -> DescribeRepositoriesResponse
DescribeRepositoriesResponse'
            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
"nextToken")
            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
"repositories" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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 DescribeRepositories where
  hashWithSalt :: Int -> DescribeRepositories -> Int
hashWithSalt Int
_salt DescribeRepositories' {Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
repositoryNames :: Maybe (NonEmpty Text)
registryId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:repositoryNames:DescribeRepositories' :: DescribeRepositories -> Maybe (NonEmpty Text)
$sel:registryId:DescribeRepositories' :: DescribeRepositories -> Maybe Text
$sel:nextToken:DescribeRepositories' :: DescribeRepositories -> Maybe Text
$sel:maxResults:DescribeRepositories' :: DescribeRepositories -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
registryId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
repositoryNames

instance Prelude.NFData DescribeRepositories where
  rnf :: DescribeRepositories -> ()
rnf DescribeRepositories' {Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
repositoryNames :: Maybe (NonEmpty Text)
registryId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:repositoryNames:DescribeRepositories' :: DescribeRepositories -> Maybe (NonEmpty Text)
$sel:registryId:DescribeRepositories' :: DescribeRepositories -> Maybe Text
$sel:nextToken:DescribeRepositories' :: DescribeRepositories -> Maybe Text
$sel:maxResults:DescribeRepositories' :: DescribeRepositories -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      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 (NonEmpty Text)
repositoryNames

instance Data.ToHeaders DescribeRepositories where
  toHeaders :: DescribeRepositories -> 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.DescribeRepositories" ::
                          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 DescribeRepositories where
  toJSON :: DescribeRepositories -> Value
toJSON DescribeRepositories' {Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
repositoryNames :: Maybe (NonEmpty Text)
registryId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:repositoryNames:DescribeRepositories' :: DescribeRepositories -> Maybe (NonEmpty Text)
$sel:registryId:DescribeRepositories' :: DescribeRepositories -> Maybe Text
$sel:nextToken:DescribeRepositories' :: DescribeRepositories -> Maybe Text
$sel:maxResults:DescribeRepositories' :: DescribeRepositories -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"maxResults" 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 Natural
maxResults,
            (Key
"nextToken" 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
nextToken,
            (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,
            (Key
"repositoryNames" 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 (NonEmpty Text)
repositoryNames
          ]
      )

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

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

-- | /See:/ 'newDescribeRepositoriesResponse' smart constructor.
data DescribeRepositoriesResponse = DescribeRepositoriesResponse'
  { -- | The @nextToken@ value to include in a future @DescribeRepositories@
    -- request. When the results of a @DescribeRepositories@ request exceed
    -- @maxResults@, this value can be used to retrieve the next page of
    -- results. This value is @null@ when there are no more results to return.
    DescribeRepositoriesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of repository objects corresponding to valid repositories.
    DescribeRepositoriesResponse -> Maybe [Repository]
repositories :: Prelude.Maybe [Repository],
    -- | The response's http status code.
    DescribeRepositoriesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeRepositoriesResponse
-> DescribeRepositoriesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRepositoriesResponse
-> DescribeRepositoriesResponse -> Bool
$c/= :: DescribeRepositoriesResponse
-> DescribeRepositoriesResponse -> Bool
== :: DescribeRepositoriesResponse
-> DescribeRepositoriesResponse -> Bool
$c== :: DescribeRepositoriesResponse
-> DescribeRepositoriesResponse -> Bool
Prelude.Eq, ReadPrec [DescribeRepositoriesResponse]
ReadPrec DescribeRepositoriesResponse
Int -> ReadS DescribeRepositoriesResponse
ReadS [DescribeRepositoriesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeRepositoriesResponse]
$creadListPrec :: ReadPrec [DescribeRepositoriesResponse]
readPrec :: ReadPrec DescribeRepositoriesResponse
$creadPrec :: ReadPrec DescribeRepositoriesResponse
readList :: ReadS [DescribeRepositoriesResponse]
$creadList :: ReadS [DescribeRepositoriesResponse]
readsPrec :: Int -> ReadS DescribeRepositoriesResponse
$creadsPrec :: Int -> ReadS DescribeRepositoriesResponse
Prelude.Read, Int -> DescribeRepositoriesResponse -> ShowS
[DescribeRepositoriesResponse] -> ShowS
DescribeRepositoriesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRepositoriesResponse] -> ShowS
$cshowList :: [DescribeRepositoriesResponse] -> ShowS
show :: DescribeRepositoriesResponse -> String
$cshow :: DescribeRepositoriesResponse -> String
showsPrec :: Int -> DescribeRepositoriesResponse -> ShowS
$cshowsPrec :: Int -> DescribeRepositoriesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeRepositoriesResponse x -> DescribeRepositoriesResponse
forall x.
DescribeRepositoriesResponse -> Rep DescribeRepositoriesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeRepositoriesResponse x -> DescribeRepositoriesResponse
$cfrom :: forall x.
DescribeRepositoriesResponse -> Rep DescribeRepositoriesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRepositoriesResponse' 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:
--
-- 'nextToken', 'describeRepositoriesResponse_nextToken' - The @nextToken@ value to include in a future @DescribeRepositories@
-- request. When the results of a @DescribeRepositories@ request exceed
-- @maxResults@, this value can be used to retrieve the next page of
-- results. This value is @null@ when there are no more results to return.
--
-- 'repositories', 'describeRepositoriesResponse_repositories' - A list of repository objects corresponding to valid repositories.
--
-- 'httpStatus', 'describeRepositoriesResponse_httpStatus' - The response's http status code.
newDescribeRepositoriesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeRepositoriesResponse
newDescribeRepositoriesResponse :: Int -> DescribeRepositoriesResponse
newDescribeRepositoriesResponse Int
pHttpStatus_ =
  DescribeRepositoriesResponse'
    { $sel:nextToken:DescribeRepositoriesResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:repositories:DescribeRepositoriesResponse' :: Maybe [Repository]
repositories = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeRepositoriesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The @nextToken@ value to include in a future @DescribeRepositories@
-- request. When the results of a @DescribeRepositories@ request exceed
-- @maxResults@, this value can be used to retrieve the next page of
-- results. This value is @null@ when there are no more results to return.
describeRepositoriesResponse_nextToken :: Lens.Lens' DescribeRepositoriesResponse (Prelude.Maybe Prelude.Text)
describeRepositoriesResponse_nextToken :: Lens' DescribeRepositoriesResponse (Maybe Text)
describeRepositoriesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRepositoriesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeRepositoriesResponse' :: DescribeRepositoriesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeRepositoriesResponse
s@DescribeRepositoriesResponse' {} Maybe Text
a -> DescribeRepositoriesResponse
s {$sel:nextToken:DescribeRepositoriesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeRepositoriesResponse)

-- | A list of repository objects corresponding to valid repositories.
describeRepositoriesResponse_repositories :: Lens.Lens' DescribeRepositoriesResponse (Prelude.Maybe [Repository])
describeRepositoriesResponse_repositories :: Lens' DescribeRepositoriesResponse (Maybe [Repository])
describeRepositoriesResponse_repositories = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRepositoriesResponse' {Maybe [Repository]
repositories :: Maybe [Repository]
$sel:repositories:DescribeRepositoriesResponse' :: DescribeRepositoriesResponse -> Maybe [Repository]
repositories} -> Maybe [Repository]
repositories) (\s :: DescribeRepositoriesResponse
s@DescribeRepositoriesResponse' {} Maybe [Repository]
a -> DescribeRepositoriesResponse
s {$sel:repositories:DescribeRepositoriesResponse' :: Maybe [Repository]
repositories = Maybe [Repository]
a} :: DescribeRepositoriesResponse) 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 response's http status code.
describeRepositoriesResponse_httpStatus :: Lens.Lens' DescribeRepositoriesResponse Prelude.Int
describeRepositoriesResponse_httpStatus :: Lens' DescribeRepositoriesResponse Int
describeRepositoriesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRepositoriesResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeRepositoriesResponse' :: DescribeRepositoriesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeRepositoriesResponse
s@DescribeRepositoriesResponse' {} Int
a -> DescribeRepositoriesResponse
s {$sel:httpStatus:DescribeRepositoriesResponse' :: Int
httpStatus = Int
a} :: DescribeRepositoriesResponse)

instance Prelude.NFData DescribeRepositoriesResponse where
  rnf :: DescribeRepositoriesResponse -> ()
rnf DescribeRepositoriesResponse' {Int
Maybe [Repository]
Maybe Text
httpStatus :: Int
repositories :: Maybe [Repository]
nextToken :: Maybe Text
$sel:httpStatus:DescribeRepositoriesResponse' :: DescribeRepositoriesResponse -> Int
$sel:repositories:DescribeRepositoriesResponse' :: DescribeRepositoriesResponse -> Maybe [Repository]
$sel:nextToken:DescribeRepositoriesResponse' :: DescribeRepositoriesResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Repository]
repositories
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus