{-# 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.DescribeSharedDirectories
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns the shared directories in your account.
--
-- This operation returns paginated results.
module Amazonka.DirectoryService.DescribeSharedDirectories
  ( -- * Creating a Request
    DescribeSharedDirectories (..),
    newDescribeSharedDirectories,

    -- * Request Lenses
    describeSharedDirectories_limit,
    describeSharedDirectories_nextToken,
    describeSharedDirectories_sharedDirectoryIds,
    describeSharedDirectories_ownerDirectoryId,

    -- * Destructuring the Response
    DescribeSharedDirectoriesResponse (..),
    newDescribeSharedDirectoriesResponse,

    -- * Response Lenses
    describeSharedDirectoriesResponse_nextToken,
    describeSharedDirectoriesResponse_sharedDirectories,
    describeSharedDirectoriesResponse_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:/ 'newDescribeSharedDirectories' smart constructor.
data DescribeSharedDirectories = DescribeSharedDirectories'
  { -- | The number of shared directories to return in the response object.
    DescribeSharedDirectories -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The @DescribeSharedDirectoriesResult.NextToken@ value from a previous
    -- call to DescribeSharedDirectories. Pass null if this is the first call.
    DescribeSharedDirectories -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of identifiers of all shared directories in your account.
    DescribeSharedDirectories -> Maybe [Text]
sharedDirectoryIds :: Prelude.Maybe [Prelude.Text],
    -- | Returns the identifier of the directory in the directory owner account.
    DescribeSharedDirectories -> Text
ownerDirectoryId :: Prelude.Text
  }
  deriving (DescribeSharedDirectories -> DescribeSharedDirectories -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSharedDirectories -> DescribeSharedDirectories -> Bool
$c/= :: DescribeSharedDirectories -> DescribeSharedDirectories -> Bool
== :: DescribeSharedDirectories -> DescribeSharedDirectories -> Bool
$c== :: DescribeSharedDirectories -> DescribeSharedDirectories -> Bool
Prelude.Eq, ReadPrec [DescribeSharedDirectories]
ReadPrec DescribeSharedDirectories
Int -> ReadS DescribeSharedDirectories
ReadS [DescribeSharedDirectories]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSharedDirectories]
$creadListPrec :: ReadPrec [DescribeSharedDirectories]
readPrec :: ReadPrec DescribeSharedDirectories
$creadPrec :: ReadPrec DescribeSharedDirectories
readList :: ReadS [DescribeSharedDirectories]
$creadList :: ReadS [DescribeSharedDirectories]
readsPrec :: Int -> ReadS DescribeSharedDirectories
$creadsPrec :: Int -> ReadS DescribeSharedDirectories
Prelude.Read, Int -> DescribeSharedDirectories -> ShowS
[DescribeSharedDirectories] -> ShowS
DescribeSharedDirectories -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSharedDirectories] -> ShowS
$cshowList :: [DescribeSharedDirectories] -> ShowS
show :: DescribeSharedDirectories -> String
$cshow :: DescribeSharedDirectories -> String
showsPrec :: Int -> DescribeSharedDirectories -> ShowS
$cshowsPrec :: Int -> DescribeSharedDirectories -> ShowS
Prelude.Show, forall x.
Rep DescribeSharedDirectories x -> DescribeSharedDirectories
forall x.
DescribeSharedDirectories -> Rep DescribeSharedDirectories x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSharedDirectories x -> DescribeSharedDirectories
$cfrom :: forall x.
DescribeSharedDirectories -> Rep DescribeSharedDirectories x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSharedDirectories' 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:
--
-- 'limit', 'describeSharedDirectories_limit' - The number of shared directories to return in the response object.
--
-- 'nextToken', 'describeSharedDirectories_nextToken' - The @DescribeSharedDirectoriesResult.NextToken@ value from a previous
-- call to DescribeSharedDirectories. Pass null if this is the first call.
--
-- 'sharedDirectoryIds', 'describeSharedDirectories_sharedDirectoryIds' - A list of identifiers of all shared directories in your account.
--
-- 'ownerDirectoryId', 'describeSharedDirectories_ownerDirectoryId' - Returns the identifier of the directory in the directory owner account.
newDescribeSharedDirectories ::
  -- | 'ownerDirectoryId'
  Prelude.Text ->
  DescribeSharedDirectories
newDescribeSharedDirectories :: Text -> DescribeSharedDirectories
newDescribeSharedDirectories Text
pOwnerDirectoryId_ =
  DescribeSharedDirectories'
    { $sel:limit:DescribeSharedDirectories' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeSharedDirectories' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:sharedDirectoryIds:DescribeSharedDirectories' :: Maybe [Text]
sharedDirectoryIds = forall a. Maybe a
Prelude.Nothing,
      $sel:ownerDirectoryId:DescribeSharedDirectories' :: Text
ownerDirectoryId = Text
pOwnerDirectoryId_
    }

-- | The number of shared directories to return in the response object.
describeSharedDirectories_limit :: Lens.Lens' DescribeSharedDirectories (Prelude.Maybe Prelude.Natural)
describeSharedDirectories_limit :: Lens' DescribeSharedDirectories (Maybe Natural)
describeSharedDirectories_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSharedDirectories' {Maybe Natural
limit :: Maybe Natural
$sel:limit:DescribeSharedDirectories' :: DescribeSharedDirectories -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: DescribeSharedDirectories
s@DescribeSharedDirectories' {} Maybe Natural
a -> DescribeSharedDirectories
s {$sel:limit:DescribeSharedDirectories' :: Maybe Natural
limit = Maybe Natural
a} :: DescribeSharedDirectories)

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

-- | A list of identifiers of all shared directories in your account.
describeSharedDirectories_sharedDirectoryIds :: Lens.Lens' DescribeSharedDirectories (Prelude.Maybe [Prelude.Text])
describeSharedDirectories_sharedDirectoryIds :: Lens' DescribeSharedDirectories (Maybe [Text])
describeSharedDirectories_sharedDirectoryIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSharedDirectories' {Maybe [Text]
sharedDirectoryIds :: Maybe [Text]
$sel:sharedDirectoryIds:DescribeSharedDirectories' :: DescribeSharedDirectories -> Maybe [Text]
sharedDirectoryIds} -> Maybe [Text]
sharedDirectoryIds) (\s :: DescribeSharedDirectories
s@DescribeSharedDirectories' {} Maybe [Text]
a -> DescribeSharedDirectories
s {$sel:sharedDirectoryIds:DescribeSharedDirectories' :: Maybe [Text]
sharedDirectoryIds = Maybe [Text]
a} :: DescribeSharedDirectories) 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

-- | Returns the identifier of the directory in the directory owner account.
describeSharedDirectories_ownerDirectoryId :: Lens.Lens' DescribeSharedDirectories Prelude.Text
describeSharedDirectories_ownerDirectoryId :: Lens' DescribeSharedDirectories Text
describeSharedDirectories_ownerDirectoryId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSharedDirectories' {Text
ownerDirectoryId :: Text
$sel:ownerDirectoryId:DescribeSharedDirectories' :: DescribeSharedDirectories -> Text
ownerDirectoryId} -> Text
ownerDirectoryId) (\s :: DescribeSharedDirectories
s@DescribeSharedDirectories' {} Text
a -> DescribeSharedDirectories
s {$sel:ownerDirectoryId:DescribeSharedDirectories' :: Text
ownerDirectoryId = Text
a} :: DescribeSharedDirectories)

instance Core.AWSPager DescribeSharedDirectories where
  page :: DescribeSharedDirectories
-> AWSResponse DescribeSharedDirectories
-> Maybe DescribeSharedDirectories
page DescribeSharedDirectories
rq AWSResponse DescribeSharedDirectories
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeSharedDirectories
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSharedDirectoriesResponse (Maybe Text)
describeSharedDirectoriesResponse_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 DescribeSharedDirectories
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSharedDirectoriesResponse (Maybe [SharedDirectory])
describeSharedDirectoriesResponse_sharedDirectories
            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.$ DescribeSharedDirectories
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeSharedDirectories (Maybe Text)
describeSharedDirectories_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeSharedDirectories
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSharedDirectoriesResponse (Maybe Text)
describeSharedDirectoriesResponse_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 DescribeSharedDirectories where
  type
    AWSResponse DescribeSharedDirectories =
      DescribeSharedDirectoriesResponse
  request :: (Service -> Service)
-> DescribeSharedDirectories -> Request DescribeSharedDirectories
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 DescribeSharedDirectories
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeSharedDirectories)))
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 [SharedDirectory]
-> Int
-> DescribeSharedDirectoriesResponse
DescribeSharedDirectoriesResponse'
            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
"SharedDirectories"
                            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 DescribeSharedDirectories where
  hashWithSalt :: Int -> DescribeSharedDirectories -> Int
hashWithSalt Int
_salt DescribeSharedDirectories' {Maybe Natural
Maybe [Text]
Maybe Text
Text
ownerDirectoryId :: Text
sharedDirectoryIds :: Maybe [Text]
nextToken :: Maybe Text
limit :: Maybe Natural
$sel:ownerDirectoryId:DescribeSharedDirectories' :: DescribeSharedDirectories -> Text
$sel:sharedDirectoryIds:DescribeSharedDirectories' :: DescribeSharedDirectories -> Maybe [Text]
$sel:nextToken:DescribeSharedDirectories' :: DescribeSharedDirectories -> Maybe Text
$sel:limit:DescribeSharedDirectories' :: DescribeSharedDirectories -> Maybe Natural
..} =
    Int
_salt
      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` Maybe [Text]
sharedDirectoryIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
ownerDirectoryId

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

instance Data.ToHeaders DescribeSharedDirectories where
  toHeaders :: DescribeSharedDirectories -> 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.DescribeSharedDirectories" ::
                          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 DescribeSharedDirectories where
  toJSON :: DescribeSharedDirectories -> Value
toJSON DescribeSharedDirectories' {Maybe Natural
Maybe [Text]
Maybe Text
Text
ownerDirectoryId :: Text
sharedDirectoryIds :: Maybe [Text]
nextToken :: Maybe Text
limit :: Maybe Natural
$sel:ownerDirectoryId:DescribeSharedDirectories' :: DescribeSharedDirectories -> Text
$sel:sharedDirectoryIds:DescribeSharedDirectories' :: DescribeSharedDirectories -> Maybe [Text]
$sel:nextToken:DescribeSharedDirectories' :: DescribeSharedDirectories -> Maybe Text
$sel:limit:DescribeSharedDirectories' :: DescribeSharedDirectories -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (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,
            (Key
"SharedDirectoryIds" 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]
sharedDirectoryIds,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"OwnerDirectoryId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
ownerDirectoryId)
          ]
      )

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

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

-- | /See:/ 'newDescribeSharedDirectoriesResponse' smart constructor.
data DescribeSharedDirectoriesResponse = DescribeSharedDirectoriesResponse'
  { -- | If not null, token that indicates that more results are available. Pass
    -- this value for the @NextToken@ parameter in a subsequent call to
    -- DescribeSharedDirectories to retrieve the next set of items.
    DescribeSharedDirectoriesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of all shared directories in your account.
    DescribeSharedDirectoriesResponse -> Maybe [SharedDirectory]
sharedDirectories :: Prelude.Maybe [SharedDirectory],
    -- | The response's http status code.
    DescribeSharedDirectoriesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeSharedDirectoriesResponse
-> DescribeSharedDirectoriesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSharedDirectoriesResponse
-> DescribeSharedDirectoriesResponse -> Bool
$c/= :: DescribeSharedDirectoriesResponse
-> DescribeSharedDirectoriesResponse -> Bool
== :: DescribeSharedDirectoriesResponse
-> DescribeSharedDirectoriesResponse -> Bool
$c== :: DescribeSharedDirectoriesResponse
-> DescribeSharedDirectoriesResponse -> Bool
Prelude.Eq, Int -> DescribeSharedDirectoriesResponse -> ShowS
[DescribeSharedDirectoriesResponse] -> ShowS
DescribeSharedDirectoriesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSharedDirectoriesResponse] -> ShowS
$cshowList :: [DescribeSharedDirectoriesResponse] -> ShowS
show :: DescribeSharedDirectoriesResponse -> String
$cshow :: DescribeSharedDirectoriesResponse -> String
showsPrec :: Int -> DescribeSharedDirectoriesResponse -> ShowS
$cshowsPrec :: Int -> DescribeSharedDirectoriesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeSharedDirectoriesResponse x
-> DescribeSharedDirectoriesResponse
forall x.
DescribeSharedDirectoriesResponse
-> Rep DescribeSharedDirectoriesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSharedDirectoriesResponse x
-> DescribeSharedDirectoriesResponse
$cfrom :: forall x.
DescribeSharedDirectoriesResponse
-> Rep DescribeSharedDirectoriesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSharedDirectoriesResponse' 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', 'describeSharedDirectoriesResponse_nextToken' - If not null, token that indicates that more results are available. Pass
-- this value for the @NextToken@ parameter in a subsequent call to
-- DescribeSharedDirectories to retrieve the next set of items.
--
-- 'sharedDirectories', 'describeSharedDirectoriesResponse_sharedDirectories' - A list of all shared directories in your account.
--
-- 'httpStatus', 'describeSharedDirectoriesResponse_httpStatus' - The response's http status code.
newDescribeSharedDirectoriesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeSharedDirectoriesResponse
newDescribeSharedDirectoriesResponse :: Int -> DescribeSharedDirectoriesResponse
newDescribeSharedDirectoriesResponse Int
pHttpStatus_ =
  DescribeSharedDirectoriesResponse'
    { $sel:nextToken:DescribeSharedDirectoriesResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:sharedDirectories:DescribeSharedDirectoriesResponse' :: Maybe [SharedDirectory]
sharedDirectories = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeSharedDirectoriesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | A list of all shared directories in your account.
describeSharedDirectoriesResponse_sharedDirectories :: Lens.Lens' DescribeSharedDirectoriesResponse (Prelude.Maybe [SharedDirectory])
describeSharedDirectoriesResponse_sharedDirectories :: Lens' DescribeSharedDirectoriesResponse (Maybe [SharedDirectory])
describeSharedDirectoriesResponse_sharedDirectories = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSharedDirectoriesResponse' {Maybe [SharedDirectory]
sharedDirectories :: Maybe [SharedDirectory]
$sel:sharedDirectories:DescribeSharedDirectoriesResponse' :: DescribeSharedDirectoriesResponse -> Maybe [SharedDirectory]
sharedDirectories} -> Maybe [SharedDirectory]
sharedDirectories) (\s :: DescribeSharedDirectoriesResponse
s@DescribeSharedDirectoriesResponse' {} Maybe [SharedDirectory]
a -> DescribeSharedDirectoriesResponse
s {$sel:sharedDirectories:DescribeSharedDirectoriesResponse' :: Maybe [SharedDirectory]
sharedDirectories = Maybe [SharedDirectory]
a} :: DescribeSharedDirectoriesResponse) 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.
describeSharedDirectoriesResponse_httpStatus :: Lens.Lens' DescribeSharedDirectoriesResponse Prelude.Int
describeSharedDirectoriesResponse_httpStatus :: Lens' DescribeSharedDirectoriesResponse Int
describeSharedDirectoriesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSharedDirectoriesResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeSharedDirectoriesResponse' :: DescribeSharedDirectoriesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeSharedDirectoriesResponse
s@DescribeSharedDirectoriesResponse' {} Int
a -> DescribeSharedDirectoriesResponse
s {$sel:httpStatus:DescribeSharedDirectoriesResponse' :: Int
httpStatus = Int
a} :: DescribeSharedDirectoriesResponse)

instance
  Prelude.NFData
    DescribeSharedDirectoriesResponse
  where
  rnf :: DescribeSharedDirectoriesResponse -> ()
rnf DescribeSharedDirectoriesResponse' {Int
Maybe [SharedDirectory]
Maybe Text
httpStatus :: Int
sharedDirectories :: Maybe [SharedDirectory]
nextToken :: Maybe Text
$sel:httpStatus:DescribeSharedDirectoriesResponse' :: DescribeSharedDirectoriesResponse -> Int
$sel:sharedDirectories:DescribeSharedDirectoriesResponse' :: DescribeSharedDirectoriesResponse -> Maybe [SharedDirectory]
$sel:nextToken:DescribeSharedDirectoriesResponse' :: DescribeSharedDirectoriesResponse -> 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 [SharedDirectory]
sharedDirectories
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus