{-# 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.DirectoryService.DescribeDomainControllers
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Provides information about any domain controllers in your directory.
--
-- This operation returns paginated results.
module Amazonka.DirectoryService.DescribeDomainControllers
  ( -- * Creating a Request
    DescribeDomainControllers (..),
    newDescribeDomainControllers,

    -- * Request Lenses
    describeDomainControllers_domainControllerIds,
    describeDomainControllers_limit,
    describeDomainControllers_nextToken,
    describeDomainControllers_directoryId,

    -- * Destructuring the Response
    DescribeDomainControllersResponse (..),
    newDescribeDomainControllersResponse,

    -- * Response Lenses
    describeDomainControllersResponse_domainControllers,
    describeDomainControllersResponse_nextToken,
    describeDomainControllersResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeDomainControllers' smart constructor.
data DescribeDomainControllers = DescribeDomainControllers'
  { -- | A list of identifiers for the domain controllers whose information will
    -- be provided.
    DescribeDomainControllers -> Maybe [Text]
domainControllerIds :: Prelude.Maybe [Prelude.Text],
    -- | The maximum number of items to return.
    DescribeDomainControllers -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The /DescribeDomainControllers.NextToken/ value from a previous call to
    -- DescribeDomainControllers. Pass null if this is the first call.
    DescribeDomainControllers -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Identifier of the directory for which to retrieve the domain controller
    -- information.
    DescribeDomainControllers -> Text
directoryId :: Prelude.Text
  }
  deriving (DescribeDomainControllers -> DescribeDomainControllers -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDomainControllers -> DescribeDomainControllers -> Bool
$c/= :: DescribeDomainControllers -> DescribeDomainControllers -> Bool
== :: DescribeDomainControllers -> DescribeDomainControllers -> Bool
$c== :: DescribeDomainControllers -> DescribeDomainControllers -> Bool
Prelude.Eq, ReadPrec [DescribeDomainControllers]
ReadPrec DescribeDomainControllers
Int -> ReadS DescribeDomainControllers
ReadS [DescribeDomainControllers]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDomainControllers]
$creadListPrec :: ReadPrec [DescribeDomainControllers]
readPrec :: ReadPrec DescribeDomainControllers
$creadPrec :: ReadPrec DescribeDomainControllers
readList :: ReadS [DescribeDomainControllers]
$creadList :: ReadS [DescribeDomainControllers]
readsPrec :: Int -> ReadS DescribeDomainControllers
$creadsPrec :: Int -> ReadS DescribeDomainControllers
Prelude.Read, Int -> DescribeDomainControllers -> ShowS
[DescribeDomainControllers] -> ShowS
DescribeDomainControllers -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDomainControllers] -> ShowS
$cshowList :: [DescribeDomainControllers] -> ShowS
show :: DescribeDomainControllers -> String
$cshow :: DescribeDomainControllers -> String
showsPrec :: Int -> DescribeDomainControllers -> ShowS
$cshowsPrec :: Int -> DescribeDomainControllers -> ShowS
Prelude.Show, forall x.
Rep DescribeDomainControllers x -> DescribeDomainControllers
forall x.
DescribeDomainControllers -> Rep DescribeDomainControllers x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDomainControllers x -> DescribeDomainControllers
$cfrom :: forall x.
DescribeDomainControllers -> Rep DescribeDomainControllers x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDomainControllers' 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:
--
-- 'domainControllerIds', 'describeDomainControllers_domainControllerIds' - A list of identifiers for the domain controllers whose information will
-- be provided.
--
-- 'limit', 'describeDomainControllers_limit' - The maximum number of items to return.
--
-- 'nextToken', 'describeDomainControllers_nextToken' - The /DescribeDomainControllers.NextToken/ value from a previous call to
-- DescribeDomainControllers. Pass null if this is the first call.
--
-- 'directoryId', 'describeDomainControllers_directoryId' - Identifier of the directory for which to retrieve the domain controller
-- information.
newDescribeDomainControllers ::
  -- | 'directoryId'
  Prelude.Text ->
  DescribeDomainControllers
newDescribeDomainControllers :: Text -> DescribeDomainControllers
newDescribeDomainControllers Text
pDirectoryId_ =
  DescribeDomainControllers'
    { $sel:domainControllerIds:DescribeDomainControllers' :: Maybe [Text]
domainControllerIds =
        forall a. Maybe a
Prelude.Nothing,
      $sel:limit:DescribeDomainControllers' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeDomainControllers' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:directoryId:DescribeDomainControllers' :: Text
directoryId = Text
pDirectoryId_
    }

-- | A list of identifiers for the domain controllers whose information will
-- be provided.
describeDomainControllers_domainControllerIds :: Lens.Lens' DescribeDomainControllers (Prelude.Maybe [Prelude.Text])
describeDomainControllers_domainControllerIds :: Lens' DescribeDomainControllers (Maybe [Text])
describeDomainControllers_domainControllerIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainControllers' {Maybe [Text]
domainControllerIds :: Maybe [Text]
$sel:domainControllerIds:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe [Text]
domainControllerIds} -> Maybe [Text]
domainControllerIds) (\s :: DescribeDomainControllers
s@DescribeDomainControllers' {} Maybe [Text]
a -> DescribeDomainControllers
s {$sel:domainControllerIds:DescribeDomainControllers' :: Maybe [Text]
domainControllerIds = Maybe [Text]
a} :: DescribeDomainControllers) 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 maximum number of items to return.
describeDomainControllers_limit :: Lens.Lens' DescribeDomainControllers (Prelude.Maybe Prelude.Natural)
describeDomainControllers_limit :: Lens' DescribeDomainControllers (Maybe Natural)
describeDomainControllers_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainControllers' {Maybe Natural
limit :: Maybe Natural
$sel:limit:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: DescribeDomainControllers
s@DescribeDomainControllers' {} Maybe Natural
a -> DescribeDomainControllers
s {$sel:limit:DescribeDomainControllers' :: Maybe Natural
limit = Maybe Natural
a} :: DescribeDomainControllers)

-- | The /DescribeDomainControllers.NextToken/ value from a previous call to
-- DescribeDomainControllers. Pass null if this is the first call.
describeDomainControllers_nextToken :: Lens.Lens' DescribeDomainControllers (Prelude.Maybe Prelude.Text)
describeDomainControllers_nextToken :: Lens' DescribeDomainControllers (Maybe Text)
describeDomainControllers_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainControllers' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeDomainControllers
s@DescribeDomainControllers' {} Maybe Text
a -> DescribeDomainControllers
s {$sel:nextToken:DescribeDomainControllers' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeDomainControllers)

-- | Identifier of the directory for which to retrieve the domain controller
-- information.
describeDomainControllers_directoryId :: Lens.Lens' DescribeDomainControllers Prelude.Text
describeDomainControllers_directoryId :: Lens' DescribeDomainControllers Text
describeDomainControllers_directoryId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainControllers' {Text
directoryId :: Text
$sel:directoryId:DescribeDomainControllers' :: DescribeDomainControllers -> Text
directoryId} -> Text
directoryId) (\s :: DescribeDomainControllers
s@DescribeDomainControllers' {} Text
a -> DescribeDomainControllers
s {$sel:directoryId:DescribeDomainControllers' :: Text
directoryId = Text
a} :: DescribeDomainControllers)

instance Core.AWSPager DescribeDomainControllers where
  page :: DescribeDomainControllers
-> AWSResponse DescribeDomainControllers
-> Maybe DescribeDomainControllers
page DescribeDomainControllers
rq AWSResponse DescribeDomainControllers
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDomainControllers
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDomainControllersResponse (Maybe Text)
describeDomainControllersResponse_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 DescribeDomainControllers
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDomainControllersResponse (Maybe [DomainController])
describeDomainControllersResponse_domainControllers
            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.$ DescribeDomainControllers
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeDomainControllers (Maybe Text)
describeDomainControllers_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeDomainControllers
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDomainControllersResponse (Maybe Text)
describeDomainControllersResponse_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 DescribeDomainControllers where
  type
    AWSResponse DescribeDomainControllers =
      DescribeDomainControllersResponse
  request :: (Service -> Service)
-> DescribeDomainControllers -> Request DescribeDomainControllers
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 DescribeDomainControllers
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeDomainControllers)))
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 [DomainController]
-> Maybe Text -> Int -> DescribeDomainControllersResponse
DescribeDomainControllersResponse'
            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
"DomainControllers"
                            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.<*> (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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeDomainControllers where
  hashWithSalt :: Int -> DescribeDomainControllers -> Int
hashWithSalt Int
_salt DescribeDomainControllers' {Maybe Natural
Maybe [Text]
Maybe Text
Text
directoryId :: Text
nextToken :: Maybe Text
limit :: Maybe Natural
domainControllerIds :: Maybe [Text]
$sel:directoryId:DescribeDomainControllers' :: DescribeDomainControllers -> Text
$sel:nextToken:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe Text
$sel:limit:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe Natural
$sel:domainControllerIds:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
domainControllerIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
directoryId

instance Prelude.NFData DescribeDomainControllers where
  rnf :: DescribeDomainControllers -> ()
rnf DescribeDomainControllers' {Maybe Natural
Maybe [Text]
Maybe Text
Text
directoryId :: Text
nextToken :: Maybe Text
limit :: Maybe Natural
domainControllerIds :: Maybe [Text]
$sel:directoryId:DescribeDomainControllers' :: DescribeDomainControllers -> Text
$sel:nextToken:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe Text
$sel:limit:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe Natural
$sel:domainControllerIds:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
domainControllerIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
limit
      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 Text
directoryId

instance Data.ToHeaders DescribeDomainControllers where
  toHeaders :: DescribeDomainControllers -> 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
"DirectoryService_20150416.DescribeDomainControllers" ::
                          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 DescribeDomainControllers where
  toJSON :: DescribeDomainControllers -> Value
toJSON DescribeDomainControllers' {Maybe Natural
Maybe [Text]
Maybe Text
Text
directoryId :: Text
nextToken :: Maybe Text
limit :: Maybe Natural
domainControllerIds :: Maybe [Text]
$sel:directoryId:DescribeDomainControllers' :: DescribeDomainControllers -> Text
$sel:nextToken:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe Text
$sel:limit:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe Natural
$sel:domainControllerIds:DescribeDomainControllers' :: DescribeDomainControllers -> Maybe [Text]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DomainControllerIds" 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]
domainControllerIds,
            (Key
"Limit" 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
limit,
            (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,
            forall a. a -> Maybe a
Prelude.Just (Key
"DirectoryId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
directoryId)
          ]
      )

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

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

-- | /See:/ 'newDescribeDomainControllersResponse' smart constructor.
data DescribeDomainControllersResponse = DescribeDomainControllersResponse'
  { -- | List of the DomainController objects that were retrieved.
    DescribeDomainControllersResponse -> Maybe [DomainController]
domainControllers :: Prelude.Maybe [DomainController],
    -- | If not null, more results are available. Pass this value for the
    -- @NextToken@ parameter in a subsequent call to DescribeDomainControllers
    -- retrieve the next set of items.
    DescribeDomainControllersResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeDomainControllersResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeDomainControllersResponse
-> DescribeDomainControllersResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDomainControllersResponse
-> DescribeDomainControllersResponse -> Bool
$c/= :: DescribeDomainControllersResponse
-> DescribeDomainControllersResponse -> Bool
== :: DescribeDomainControllersResponse
-> DescribeDomainControllersResponse -> Bool
$c== :: DescribeDomainControllersResponse
-> DescribeDomainControllersResponse -> Bool
Prelude.Eq, ReadPrec [DescribeDomainControllersResponse]
ReadPrec DescribeDomainControllersResponse
Int -> ReadS DescribeDomainControllersResponse
ReadS [DescribeDomainControllersResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDomainControllersResponse]
$creadListPrec :: ReadPrec [DescribeDomainControllersResponse]
readPrec :: ReadPrec DescribeDomainControllersResponse
$creadPrec :: ReadPrec DescribeDomainControllersResponse
readList :: ReadS [DescribeDomainControllersResponse]
$creadList :: ReadS [DescribeDomainControllersResponse]
readsPrec :: Int -> ReadS DescribeDomainControllersResponse
$creadsPrec :: Int -> ReadS DescribeDomainControllersResponse
Prelude.Read, Int -> DescribeDomainControllersResponse -> ShowS
[DescribeDomainControllersResponse] -> ShowS
DescribeDomainControllersResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDomainControllersResponse] -> ShowS
$cshowList :: [DescribeDomainControllersResponse] -> ShowS
show :: DescribeDomainControllersResponse -> String
$cshow :: DescribeDomainControllersResponse -> String
showsPrec :: Int -> DescribeDomainControllersResponse -> ShowS
$cshowsPrec :: Int -> DescribeDomainControllersResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeDomainControllersResponse x
-> DescribeDomainControllersResponse
forall x.
DescribeDomainControllersResponse
-> Rep DescribeDomainControllersResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDomainControllersResponse x
-> DescribeDomainControllersResponse
$cfrom :: forall x.
DescribeDomainControllersResponse
-> Rep DescribeDomainControllersResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDomainControllersResponse' 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:
--
-- 'domainControllers', 'describeDomainControllersResponse_domainControllers' - List of the DomainController objects that were retrieved.
--
-- 'nextToken', 'describeDomainControllersResponse_nextToken' - If not null, more results are available. Pass this value for the
-- @NextToken@ parameter in a subsequent call to DescribeDomainControllers
-- retrieve the next set of items.
--
-- 'httpStatus', 'describeDomainControllersResponse_httpStatus' - The response's http status code.
newDescribeDomainControllersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeDomainControllersResponse
newDescribeDomainControllersResponse :: Int -> DescribeDomainControllersResponse
newDescribeDomainControllersResponse Int
pHttpStatus_ =
  DescribeDomainControllersResponse'
    { $sel:domainControllers:DescribeDomainControllersResponse' :: Maybe [DomainController]
domainControllers =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeDomainControllersResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeDomainControllersResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | List of the DomainController objects that were retrieved.
describeDomainControllersResponse_domainControllers :: Lens.Lens' DescribeDomainControllersResponse (Prelude.Maybe [DomainController])
describeDomainControllersResponse_domainControllers :: Lens' DescribeDomainControllersResponse (Maybe [DomainController])
describeDomainControllersResponse_domainControllers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainControllersResponse' {Maybe [DomainController]
domainControllers :: Maybe [DomainController]
$sel:domainControllers:DescribeDomainControllersResponse' :: DescribeDomainControllersResponse -> Maybe [DomainController]
domainControllers} -> Maybe [DomainController]
domainControllers) (\s :: DescribeDomainControllersResponse
s@DescribeDomainControllersResponse' {} Maybe [DomainController]
a -> DescribeDomainControllersResponse
s {$sel:domainControllers:DescribeDomainControllersResponse' :: Maybe [DomainController]
domainControllers = Maybe [DomainController]
a} :: DescribeDomainControllersResponse) 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

-- | If not null, more results are available. Pass this value for the
-- @NextToken@ parameter in a subsequent call to DescribeDomainControllers
-- retrieve the next set of items.
describeDomainControllersResponse_nextToken :: Lens.Lens' DescribeDomainControllersResponse (Prelude.Maybe Prelude.Text)
describeDomainControllersResponse_nextToken :: Lens' DescribeDomainControllersResponse (Maybe Text)
describeDomainControllersResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainControllersResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeDomainControllersResponse' :: DescribeDomainControllersResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeDomainControllersResponse
s@DescribeDomainControllersResponse' {} Maybe Text
a -> DescribeDomainControllersResponse
s {$sel:nextToken:DescribeDomainControllersResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeDomainControllersResponse)

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

instance
  Prelude.NFData
    DescribeDomainControllersResponse
  where
  rnf :: DescribeDomainControllersResponse -> ()
rnf DescribeDomainControllersResponse' {Int
Maybe [DomainController]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
domainControllers :: Maybe [DomainController]
$sel:httpStatus:DescribeDomainControllersResponse' :: DescribeDomainControllersResponse -> Int
$sel:nextToken:DescribeDomainControllersResponse' :: DescribeDomainControllersResponse -> Maybe Text
$sel:domainControllers:DescribeDomainControllersResponse' :: DescribeDomainControllersResponse -> Maybe [DomainController]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [DomainController]
domainControllers
      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 Int
httpStatus