{-# 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.WorkSpaces.DescribeWorkspaceDirectories
-- 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 the available directories that are registered with Amazon
-- WorkSpaces.
--
-- This operation returns paginated results.
module Amazonka.WorkSpaces.DescribeWorkspaceDirectories
  ( -- * Creating a Request
    DescribeWorkspaceDirectories (..),
    newDescribeWorkspaceDirectories,

    -- * Request Lenses
    describeWorkspaceDirectories_directoryIds,
    describeWorkspaceDirectories_limit,
    describeWorkspaceDirectories_nextToken,

    -- * Destructuring the Response
    DescribeWorkspaceDirectoriesResponse (..),
    newDescribeWorkspaceDirectoriesResponse,

    -- * Response Lenses
    describeWorkspaceDirectoriesResponse_directories,
    describeWorkspaceDirectoriesResponse_nextToken,
    describeWorkspaceDirectoriesResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeWorkspaceDirectories' smart constructor.
data DescribeWorkspaceDirectories = DescribeWorkspaceDirectories'
  { -- | The identifiers of the directories. If the value is null, all
    -- directories are retrieved.
    DescribeWorkspaceDirectories -> Maybe (NonEmpty Text)
directoryIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The maximum number of directories to return.
    DescribeWorkspaceDirectories -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | If you received a @NextToken@ from a previous call that was paginated,
    -- provide this token to receive the next set of results.
    DescribeWorkspaceDirectories -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeWorkspaceDirectories
-> DescribeWorkspaceDirectories -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeWorkspaceDirectories
-> DescribeWorkspaceDirectories -> Bool
$c/= :: DescribeWorkspaceDirectories
-> DescribeWorkspaceDirectories -> Bool
== :: DescribeWorkspaceDirectories
-> DescribeWorkspaceDirectories -> Bool
$c== :: DescribeWorkspaceDirectories
-> DescribeWorkspaceDirectories -> Bool
Prelude.Eq, ReadPrec [DescribeWorkspaceDirectories]
ReadPrec DescribeWorkspaceDirectories
Int -> ReadS DescribeWorkspaceDirectories
ReadS [DescribeWorkspaceDirectories]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeWorkspaceDirectories]
$creadListPrec :: ReadPrec [DescribeWorkspaceDirectories]
readPrec :: ReadPrec DescribeWorkspaceDirectories
$creadPrec :: ReadPrec DescribeWorkspaceDirectories
readList :: ReadS [DescribeWorkspaceDirectories]
$creadList :: ReadS [DescribeWorkspaceDirectories]
readsPrec :: Int -> ReadS DescribeWorkspaceDirectories
$creadsPrec :: Int -> ReadS DescribeWorkspaceDirectories
Prelude.Read, Int -> DescribeWorkspaceDirectories -> ShowS
[DescribeWorkspaceDirectories] -> ShowS
DescribeWorkspaceDirectories -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeWorkspaceDirectories] -> ShowS
$cshowList :: [DescribeWorkspaceDirectories] -> ShowS
show :: DescribeWorkspaceDirectories -> String
$cshow :: DescribeWorkspaceDirectories -> String
showsPrec :: Int -> DescribeWorkspaceDirectories -> ShowS
$cshowsPrec :: Int -> DescribeWorkspaceDirectories -> ShowS
Prelude.Show, forall x.
Rep DescribeWorkspaceDirectories x -> DescribeWorkspaceDirectories
forall x.
DescribeWorkspaceDirectories -> Rep DescribeWorkspaceDirectories x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeWorkspaceDirectories x -> DescribeWorkspaceDirectories
$cfrom :: forall x.
DescribeWorkspaceDirectories -> Rep DescribeWorkspaceDirectories x
Prelude.Generic)

-- |
-- Create a value of 'DescribeWorkspaceDirectories' 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', 'describeWorkspaceDirectories_directoryIds' - The identifiers of the directories. If the value is null, all
-- directories are retrieved.
--
-- 'limit', 'describeWorkspaceDirectories_limit' - The maximum number of directories to return.
--
-- 'nextToken', 'describeWorkspaceDirectories_nextToken' - If you received a @NextToken@ from a previous call that was paginated,
-- provide this token to receive the next set of results.
newDescribeWorkspaceDirectories ::
  DescribeWorkspaceDirectories
newDescribeWorkspaceDirectories :: DescribeWorkspaceDirectories
newDescribeWorkspaceDirectories =
  DescribeWorkspaceDirectories'
    { $sel:directoryIds:DescribeWorkspaceDirectories' :: Maybe (NonEmpty Text)
directoryIds =
        forall a. Maybe a
Prelude.Nothing,
      $sel:limit:DescribeWorkspaceDirectories' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeWorkspaceDirectories' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | The identifiers of the directories. If the value is null, all
-- directories are retrieved.
describeWorkspaceDirectories_directoryIds :: Lens.Lens' DescribeWorkspaceDirectories (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
describeWorkspaceDirectories_directoryIds :: Lens' DescribeWorkspaceDirectories (Maybe (NonEmpty Text))
describeWorkspaceDirectories_directoryIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeWorkspaceDirectories' {Maybe (NonEmpty Text)
directoryIds :: Maybe (NonEmpty Text)
$sel:directoryIds:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe (NonEmpty Text)
directoryIds} -> Maybe (NonEmpty Text)
directoryIds) (\s :: DescribeWorkspaceDirectories
s@DescribeWorkspaceDirectories' {} Maybe (NonEmpty Text)
a -> DescribeWorkspaceDirectories
s {$sel:directoryIds:DescribeWorkspaceDirectories' :: Maybe (NonEmpty Text)
directoryIds = Maybe (NonEmpty Text)
a} :: DescribeWorkspaceDirectories) 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 directories to return.
describeWorkspaceDirectories_limit :: Lens.Lens' DescribeWorkspaceDirectories (Prelude.Maybe Prelude.Natural)
describeWorkspaceDirectories_limit :: Lens' DescribeWorkspaceDirectories (Maybe Natural)
describeWorkspaceDirectories_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeWorkspaceDirectories' {Maybe Natural
limit :: Maybe Natural
$sel:limit:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: DescribeWorkspaceDirectories
s@DescribeWorkspaceDirectories' {} Maybe Natural
a -> DescribeWorkspaceDirectories
s {$sel:limit:DescribeWorkspaceDirectories' :: Maybe Natural
limit = Maybe Natural
a} :: DescribeWorkspaceDirectories)

-- | If you received a @NextToken@ from a previous call that was paginated,
-- provide this token to receive the next set of results.
describeWorkspaceDirectories_nextToken :: Lens.Lens' DescribeWorkspaceDirectories (Prelude.Maybe Prelude.Text)
describeWorkspaceDirectories_nextToken :: Lens' DescribeWorkspaceDirectories (Maybe Text)
describeWorkspaceDirectories_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeWorkspaceDirectories' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeWorkspaceDirectories
s@DescribeWorkspaceDirectories' {} Maybe Text
a -> DescribeWorkspaceDirectories
s {$sel:nextToken:DescribeWorkspaceDirectories' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeWorkspaceDirectories)

instance Core.AWSPager DescribeWorkspaceDirectories where
  page :: DescribeWorkspaceDirectories
-> AWSResponse DescribeWorkspaceDirectories
-> Maybe DescribeWorkspaceDirectories
page DescribeWorkspaceDirectories
rq AWSResponse DescribeWorkspaceDirectories
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeWorkspaceDirectories
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeWorkspaceDirectoriesResponse (Maybe Text)
describeWorkspaceDirectoriesResponse_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 DescribeWorkspaceDirectories
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeWorkspaceDirectoriesResponse (Maybe [WorkspaceDirectory])
describeWorkspaceDirectoriesResponse_directories
            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.$ DescribeWorkspaceDirectories
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeWorkspaceDirectories (Maybe Text)
describeWorkspaceDirectories_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeWorkspaceDirectories
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeWorkspaceDirectoriesResponse (Maybe Text)
describeWorkspaceDirectoriesResponse_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 DescribeWorkspaceDirectories where
  type
    AWSResponse DescribeWorkspaceDirectories =
      DescribeWorkspaceDirectoriesResponse
  request :: (Service -> Service)
-> DescribeWorkspaceDirectories
-> Request DescribeWorkspaceDirectories
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 DescribeWorkspaceDirectories
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeWorkspaceDirectories)))
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 [WorkspaceDirectory]
-> Maybe Text -> Int -> DescribeWorkspaceDirectoriesResponse
DescribeWorkspaceDirectoriesResponse'
            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
"Directories" 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
    DescribeWorkspaceDirectories
  where
  hashWithSalt :: Int -> DescribeWorkspaceDirectories -> Int
hashWithSalt Int
_salt DescribeWorkspaceDirectories' {Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
nextToken :: Maybe Text
limit :: Maybe Natural
directoryIds :: Maybe (NonEmpty Text)
$sel:nextToken:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe Text
$sel:limit:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe Natural
$sel:directoryIds:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe (NonEmpty Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty 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 DescribeWorkspaceDirectories where
  rnf :: DescribeWorkspaceDirectories -> ()
rnf DescribeWorkspaceDirectories' {Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
nextToken :: Maybe Text
limit :: Maybe Natural
directoryIds :: Maybe (NonEmpty Text)
$sel:nextToken:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe Text
$sel:limit:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe Natural
$sel:directoryIds:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe (NonEmpty Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty 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 DescribeWorkspaceDirectories where
  toHeaders :: DescribeWorkspaceDirectories -> 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
"WorkspacesService.DescribeWorkspaceDirectories" ::
                          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 DescribeWorkspaceDirectories where
  toJSON :: DescribeWorkspaceDirectories -> Value
toJSON DescribeWorkspaceDirectories' {Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
nextToken :: Maybe Text
limit :: Maybe Natural
directoryIds :: Maybe (NonEmpty Text)
$sel:nextToken:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe Text
$sel:limit:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe Natural
$sel:directoryIds:DescribeWorkspaceDirectories' :: DescribeWorkspaceDirectories -> Maybe (NonEmpty 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 (NonEmpty 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 DescribeWorkspaceDirectories where
  toPath :: DescribeWorkspaceDirectories -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newDescribeWorkspaceDirectoriesResponse' smart constructor.
data DescribeWorkspaceDirectoriesResponse = DescribeWorkspaceDirectoriesResponse'
  { -- | Information about the directories.
    DescribeWorkspaceDirectoriesResponse -> Maybe [WorkspaceDirectory]
directories :: Prelude.Maybe [WorkspaceDirectory],
    -- | The token to use to retrieve the next page of results. This value is
    -- null when there are no more results to return.
    DescribeWorkspaceDirectoriesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeWorkspaceDirectoriesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeWorkspaceDirectoriesResponse
-> DescribeWorkspaceDirectoriesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeWorkspaceDirectoriesResponse
-> DescribeWorkspaceDirectoriesResponse -> Bool
$c/= :: DescribeWorkspaceDirectoriesResponse
-> DescribeWorkspaceDirectoriesResponse -> Bool
== :: DescribeWorkspaceDirectoriesResponse
-> DescribeWorkspaceDirectoriesResponse -> Bool
$c== :: DescribeWorkspaceDirectoriesResponse
-> DescribeWorkspaceDirectoriesResponse -> Bool
Prelude.Eq, ReadPrec [DescribeWorkspaceDirectoriesResponse]
ReadPrec DescribeWorkspaceDirectoriesResponse
Int -> ReadS DescribeWorkspaceDirectoriesResponse
ReadS [DescribeWorkspaceDirectoriesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeWorkspaceDirectoriesResponse]
$creadListPrec :: ReadPrec [DescribeWorkspaceDirectoriesResponse]
readPrec :: ReadPrec DescribeWorkspaceDirectoriesResponse
$creadPrec :: ReadPrec DescribeWorkspaceDirectoriesResponse
readList :: ReadS [DescribeWorkspaceDirectoriesResponse]
$creadList :: ReadS [DescribeWorkspaceDirectoriesResponse]
readsPrec :: Int -> ReadS DescribeWorkspaceDirectoriesResponse
$creadsPrec :: Int -> ReadS DescribeWorkspaceDirectoriesResponse
Prelude.Read, Int -> DescribeWorkspaceDirectoriesResponse -> ShowS
[DescribeWorkspaceDirectoriesResponse] -> ShowS
DescribeWorkspaceDirectoriesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeWorkspaceDirectoriesResponse] -> ShowS
$cshowList :: [DescribeWorkspaceDirectoriesResponse] -> ShowS
show :: DescribeWorkspaceDirectoriesResponse -> String
$cshow :: DescribeWorkspaceDirectoriesResponse -> String
showsPrec :: Int -> DescribeWorkspaceDirectoriesResponse -> ShowS
$cshowsPrec :: Int -> DescribeWorkspaceDirectoriesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeWorkspaceDirectoriesResponse x
-> DescribeWorkspaceDirectoriesResponse
forall x.
DescribeWorkspaceDirectoriesResponse
-> Rep DescribeWorkspaceDirectoriesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeWorkspaceDirectoriesResponse x
-> DescribeWorkspaceDirectoriesResponse
$cfrom :: forall x.
DescribeWorkspaceDirectoriesResponse
-> Rep DescribeWorkspaceDirectoriesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeWorkspaceDirectoriesResponse' 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:
--
-- 'directories', 'describeWorkspaceDirectoriesResponse_directories' - Information about the directories.
--
-- 'nextToken', 'describeWorkspaceDirectoriesResponse_nextToken' - The token to use to retrieve the next page of results. This value is
-- null when there are no more results to return.
--
-- 'httpStatus', 'describeWorkspaceDirectoriesResponse_httpStatus' - The response's http status code.
newDescribeWorkspaceDirectoriesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeWorkspaceDirectoriesResponse
newDescribeWorkspaceDirectoriesResponse :: Int -> DescribeWorkspaceDirectoriesResponse
newDescribeWorkspaceDirectoriesResponse Int
pHttpStatus_ =
  DescribeWorkspaceDirectoriesResponse'
    { $sel:directories:DescribeWorkspaceDirectoriesResponse' :: Maybe [WorkspaceDirectory]
directories =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeWorkspaceDirectoriesResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeWorkspaceDirectoriesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the directories.
describeWorkspaceDirectoriesResponse_directories :: Lens.Lens' DescribeWorkspaceDirectoriesResponse (Prelude.Maybe [WorkspaceDirectory])
describeWorkspaceDirectoriesResponse_directories :: Lens'
  DescribeWorkspaceDirectoriesResponse (Maybe [WorkspaceDirectory])
describeWorkspaceDirectoriesResponse_directories = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeWorkspaceDirectoriesResponse' {Maybe [WorkspaceDirectory]
directories :: Maybe [WorkspaceDirectory]
$sel:directories:DescribeWorkspaceDirectoriesResponse' :: DescribeWorkspaceDirectoriesResponse -> Maybe [WorkspaceDirectory]
directories} -> Maybe [WorkspaceDirectory]
directories) (\s :: DescribeWorkspaceDirectoriesResponse
s@DescribeWorkspaceDirectoriesResponse' {} Maybe [WorkspaceDirectory]
a -> DescribeWorkspaceDirectoriesResponse
s {$sel:directories:DescribeWorkspaceDirectoriesResponse' :: Maybe [WorkspaceDirectory]
directories = Maybe [WorkspaceDirectory]
a} :: DescribeWorkspaceDirectoriesResponse) 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 token to use to retrieve the next page of results. This value is
-- null when there are no more results to return.
describeWorkspaceDirectoriesResponse_nextToken :: Lens.Lens' DescribeWorkspaceDirectoriesResponse (Prelude.Maybe Prelude.Text)
describeWorkspaceDirectoriesResponse_nextToken :: Lens' DescribeWorkspaceDirectoriesResponse (Maybe Text)
describeWorkspaceDirectoriesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeWorkspaceDirectoriesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeWorkspaceDirectoriesResponse' :: DescribeWorkspaceDirectoriesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeWorkspaceDirectoriesResponse
s@DescribeWorkspaceDirectoriesResponse' {} Maybe Text
a -> DescribeWorkspaceDirectoriesResponse
s {$sel:nextToken:DescribeWorkspaceDirectoriesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeWorkspaceDirectoriesResponse)

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

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