{-# 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.DescribeDirectories
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Obtains information about the directories that belong to this account.
--
-- You can retrieve information about specific directories by passing the
-- directory identifiers in the @DirectoryIds@ parameter. Otherwise, all
-- directories that belong to the current account are returned.
--
-- This operation supports pagination with the use of the @NextToken@
-- request and response parameters. If more results are available, the
-- @DescribeDirectoriesResult.NextToken@ member contains a token that you
-- pass in the next call to DescribeDirectories to retrieve the next set of
-- items.
--
-- You can also specify a maximum number of return results with the @Limit@
-- parameter.
--
-- This operation returns paginated results.
module Amazonka.DirectoryService.DescribeDirectories
  ( -- * Creating a Request
    DescribeDirectories (..),
    newDescribeDirectories,

    -- * Request Lenses
    describeDirectories_directoryIds,
    describeDirectories_limit,
    describeDirectories_nextToken,

    -- * Destructuring the Response
    DescribeDirectoriesResponse (..),
    newDescribeDirectoriesResponse,

    -- * Response Lenses
    describeDirectoriesResponse_directoryDescriptions,
    describeDirectoriesResponse_nextToken,
    describeDirectoriesResponse_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

-- | Contains the inputs for the DescribeDirectories operation.
--
-- /See:/ 'newDescribeDirectories' smart constructor.
data DescribeDirectories = DescribeDirectories'
  { -- | A list of identifiers of the directories for which to obtain the
    -- information. If this member is null, all directories that belong to the
    -- current account are returned.
    --
    -- An empty list results in an @InvalidParameterException@ being thrown.
    DescribeDirectories -> Maybe [Text]
directoryIds :: Prelude.Maybe [Prelude.Text],
    -- | The maximum number of items to return. If this value is zero, the
    -- maximum number of items is specified by the limitations of the
    -- operation.
    DescribeDirectories -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The @DescribeDirectoriesResult.NextToken@ value from a previous call to
    -- DescribeDirectories. Pass null if this is the first call.
    DescribeDirectories -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeDirectories -> DescribeDirectories -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDirectories -> DescribeDirectories -> Bool
$c/= :: DescribeDirectories -> DescribeDirectories -> Bool
== :: DescribeDirectories -> DescribeDirectories -> Bool
$c== :: DescribeDirectories -> DescribeDirectories -> Bool
Prelude.Eq, ReadPrec [DescribeDirectories]
ReadPrec DescribeDirectories
Int -> ReadS DescribeDirectories
ReadS [DescribeDirectories]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDirectories]
$creadListPrec :: ReadPrec [DescribeDirectories]
readPrec :: ReadPrec DescribeDirectories
$creadPrec :: ReadPrec DescribeDirectories
readList :: ReadS [DescribeDirectories]
$creadList :: ReadS [DescribeDirectories]
readsPrec :: Int -> ReadS DescribeDirectories
$creadsPrec :: Int -> ReadS DescribeDirectories
Prelude.Read, Int -> DescribeDirectories -> ShowS
[DescribeDirectories] -> ShowS
DescribeDirectories -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDirectories] -> ShowS
$cshowList :: [DescribeDirectories] -> ShowS
show :: DescribeDirectories -> String
$cshow :: DescribeDirectories -> String
showsPrec :: Int -> DescribeDirectories -> ShowS
$cshowsPrec :: Int -> DescribeDirectories -> ShowS
Prelude.Show, forall x. Rep DescribeDirectories x -> DescribeDirectories
forall x. DescribeDirectories -> Rep DescribeDirectories x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeDirectories x -> DescribeDirectories
$cfrom :: forall x. DescribeDirectories -> Rep DescribeDirectories x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDirectories' 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:
--
-- 'directoryIds', 'describeDirectories_directoryIds' - A list of identifiers of the directories for which to obtain the
-- information. If this member is null, all directories that belong to the
-- current account are returned.
--
-- An empty list results in an @InvalidParameterException@ being thrown.
--
-- 'limit', 'describeDirectories_limit' - The maximum number of items to return. If this value is zero, the
-- maximum number of items is specified by the limitations of the
-- operation.
--
-- 'nextToken', 'describeDirectories_nextToken' - The @DescribeDirectoriesResult.NextToken@ value from a previous call to
-- DescribeDirectories. Pass null if this is the first call.
newDescribeDirectories ::
  DescribeDirectories
newDescribeDirectories :: DescribeDirectories
newDescribeDirectories =
  DescribeDirectories'
    { $sel:directoryIds:DescribeDirectories' :: Maybe [Text]
directoryIds =
        forall a. Maybe a
Prelude.Nothing,
      $sel:limit:DescribeDirectories' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeDirectories' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | A list of identifiers of the directories for which to obtain the
-- information. If this member is null, all directories that belong to the
-- current account are returned.
--
-- An empty list results in an @InvalidParameterException@ being thrown.
describeDirectories_directoryIds :: Lens.Lens' DescribeDirectories (Prelude.Maybe [Prelude.Text])
describeDirectories_directoryIds :: Lens' DescribeDirectories (Maybe [Text])
describeDirectories_directoryIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDirectories' {Maybe [Text]
directoryIds :: Maybe [Text]
$sel:directoryIds:DescribeDirectories' :: DescribeDirectories -> Maybe [Text]
directoryIds} -> Maybe [Text]
directoryIds) (\s :: DescribeDirectories
s@DescribeDirectories' {} Maybe [Text]
a -> DescribeDirectories
s {$sel:directoryIds:DescribeDirectories' :: Maybe [Text]
directoryIds = Maybe [Text]
a} :: DescribeDirectories) 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. If this value is zero, the
-- maximum number of items is specified by the limitations of the
-- operation.
describeDirectories_limit :: Lens.Lens' DescribeDirectories (Prelude.Maybe Prelude.Natural)
describeDirectories_limit :: Lens' DescribeDirectories (Maybe Natural)
describeDirectories_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDirectories' {Maybe Natural
limit :: Maybe Natural
$sel:limit:DescribeDirectories' :: DescribeDirectories -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: DescribeDirectories
s@DescribeDirectories' {} Maybe Natural
a -> DescribeDirectories
s {$sel:limit:DescribeDirectories' :: Maybe Natural
limit = Maybe Natural
a} :: DescribeDirectories)

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

instance Core.AWSPager DescribeDirectories where
  page :: DescribeDirectories
-> AWSResponse DescribeDirectories -> Maybe DescribeDirectories
page DescribeDirectories
rq AWSResponse DescribeDirectories
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDirectories
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDirectoriesResponse (Maybe Text)
describeDirectoriesResponse_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 DescribeDirectories
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDirectoriesResponse (Maybe [DirectoryDescription])
describeDirectoriesResponse_directoryDescriptions
            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.$ DescribeDirectories
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeDirectories (Maybe Text)
describeDirectories_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeDirectories
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDirectoriesResponse (Maybe Text)
describeDirectoriesResponse_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 DescribeDirectories where
  type
    AWSResponse DescribeDirectories =
      DescribeDirectoriesResponse
  request :: (Service -> Service)
-> DescribeDirectories -> Request DescribeDirectories
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 DescribeDirectories
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeDirectories)))
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 [DirectoryDescription]
-> Maybe Text -> Int -> DescribeDirectoriesResponse
DescribeDirectoriesResponse'
            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
"DirectoryDescriptions"
                            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 DescribeDirectories where
  hashWithSalt :: Int -> DescribeDirectories -> Int
hashWithSalt Int
_salt DescribeDirectories' {Maybe Natural
Maybe [Text]
Maybe Text
nextToken :: Maybe Text
limit :: Maybe Natural
directoryIds :: Maybe [Text]
$sel:nextToken:DescribeDirectories' :: DescribeDirectories -> Maybe Text
$sel:limit:DescribeDirectories' :: DescribeDirectories -> Maybe Natural
$sel:directoryIds:DescribeDirectories' :: DescribeDirectories -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
directoryIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

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

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

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

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

-- | Contains the results of the DescribeDirectories operation.
--
-- /See:/ 'newDescribeDirectoriesResponse' smart constructor.
data DescribeDirectoriesResponse = DescribeDirectoriesResponse'
  { -- | The list of DirectoryDescription objects that were retrieved.
    --
    -- It is possible that this list contains less than the number of items
    -- specified in the @Limit@ member of the request. This occurs if there are
    -- less than the requested number of items left to retrieve, or if the
    -- limitations of the operation have been exceeded.
    DescribeDirectoriesResponse -> Maybe [DirectoryDescription]
directoryDescriptions :: Prelude.Maybe [DirectoryDescription],
    -- | If not null, more results are available. Pass this value for the
    -- @NextToken@ parameter in a subsequent call to DescribeDirectories to
    -- retrieve the next set of items.
    DescribeDirectoriesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeDirectoriesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeDirectoriesResponse -> DescribeDirectoriesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDirectoriesResponse -> DescribeDirectoriesResponse -> Bool
$c/= :: DescribeDirectoriesResponse -> DescribeDirectoriesResponse -> Bool
== :: DescribeDirectoriesResponse -> DescribeDirectoriesResponse -> Bool
$c== :: DescribeDirectoriesResponse -> DescribeDirectoriesResponse -> Bool
Prelude.Eq, Int -> DescribeDirectoriesResponse -> ShowS
[DescribeDirectoriesResponse] -> ShowS
DescribeDirectoriesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDirectoriesResponse] -> ShowS
$cshowList :: [DescribeDirectoriesResponse] -> ShowS
show :: DescribeDirectoriesResponse -> String
$cshow :: DescribeDirectoriesResponse -> String
showsPrec :: Int -> DescribeDirectoriesResponse -> ShowS
$cshowsPrec :: Int -> DescribeDirectoriesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeDirectoriesResponse x -> DescribeDirectoriesResponse
forall x.
DescribeDirectoriesResponse -> Rep DescribeDirectoriesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDirectoriesResponse x -> DescribeDirectoriesResponse
$cfrom :: forall x.
DescribeDirectoriesResponse -> Rep DescribeDirectoriesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDirectoriesResponse' 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:
--
-- 'directoryDescriptions', 'describeDirectoriesResponse_directoryDescriptions' - The list of DirectoryDescription objects that were retrieved.
--
-- It is possible that this list contains less than the number of items
-- specified in the @Limit@ member of the request. This occurs if there are
-- less than the requested number of items left to retrieve, or if the
-- limitations of the operation have been exceeded.
--
-- 'nextToken', 'describeDirectoriesResponse_nextToken' - If not null, more results are available. Pass this value for the
-- @NextToken@ parameter in a subsequent call to DescribeDirectories to
-- retrieve the next set of items.
--
-- 'httpStatus', 'describeDirectoriesResponse_httpStatus' - The response's http status code.
newDescribeDirectoriesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeDirectoriesResponse
newDescribeDirectoriesResponse :: Int -> DescribeDirectoriesResponse
newDescribeDirectoriesResponse Int
pHttpStatus_ =
  DescribeDirectoriesResponse'
    { $sel:directoryDescriptions:DescribeDirectoriesResponse' :: Maybe [DirectoryDescription]
directoryDescriptions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeDirectoriesResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeDirectoriesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The list of DirectoryDescription objects that were retrieved.
--
-- It is possible that this list contains less than the number of items
-- specified in the @Limit@ member of the request. This occurs if there are
-- less than the requested number of items left to retrieve, or if the
-- limitations of the operation have been exceeded.
describeDirectoriesResponse_directoryDescriptions :: Lens.Lens' DescribeDirectoriesResponse (Prelude.Maybe [DirectoryDescription])
describeDirectoriesResponse_directoryDescriptions :: Lens' DescribeDirectoriesResponse (Maybe [DirectoryDescription])
describeDirectoriesResponse_directoryDescriptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDirectoriesResponse' {Maybe [DirectoryDescription]
directoryDescriptions :: Maybe [DirectoryDescription]
$sel:directoryDescriptions:DescribeDirectoriesResponse' :: DescribeDirectoriesResponse -> Maybe [DirectoryDescription]
directoryDescriptions} -> Maybe [DirectoryDescription]
directoryDescriptions) (\s :: DescribeDirectoriesResponse
s@DescribeDirectoriesResponse' {} Maybe [DirectoryDescription]
a -> DescribeDirectoriesResponse
s {$sel:directoryDescriptions:DescribeDirectoriesResponse' :: Maybe [DirectoryDescription]
directoryDescriptions = Maybe [DirectoryDescription]
a} :: DescribeDirectoriesResponse) 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 DescribeDirectories to
-- retrieve the next set of items.
describeDirectoriesResponse_nextToken :: Lens.Lens' DescribeDirectoriesResponse (Prelude.Maybe Prelude.Text)
describeDirectoriesResponse_nextToken :: Lens' DescribeDirectoriesResponse (Maybe Text)
describeDirectoriesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDirectoriesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeDirectoriesResponse' :: DescribeDirectoriesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeDirectoriesResponse
s@DescribeDirectoriesResponse' {} Maybe Text
a -> DescribeDirectoriesResponse
s {$sel:nextToken:DescribeDirectoriesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeDirectoriesResponse)

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

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