{-# 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.WorkDocs.DescribeFolderContents
-- 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 contents of the specified folder, including its documents
-- and subfolders.
--
-- By default, Amazon WorkDocs returns the first 100 active document and
-- folder metadata items. If there are more results, the response includes
-- a marker that you can use to request the next set of results. You can
-- also request initialized documents.
--
-- This operation returns paginated results.
module Amazonka.WorkDocs.DescribeFolderContents
  ( -- * Creating a Request
    DescribeFolderContents (..),
    newDescribeFolderContents,

    -- * Request Lenses
    describeFolderContents_authenticationToken,
    describeFolderContents_include,
    describeFolderContents_limit,
    describeFolderContents_marker,
    describeFolderContents_order,
    describeFolderContents_sort,
    describeFolderContents_type,
    describeFolderContents_folderId,

    -- * Destructuring the Response
    DescribeFolderContentsResponse (..),
    newDescribeFolderContentsResponse,

    -- * Response Lenses
    describeFolderContentsResponse_documents,
    describeFolderContentsResponse_folders,
    describeFolderContentsResponse_marker,
    describeFolderContentsResponse_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.WorkDocs.Types

-- | /See:/ 'newDescribeFolderContents' smart constructor.
data DescribeFolderContents = DescribeFolderContents'
  { -- | Amazon WorkDocs authentication token. Not required when using AWS
    -- administrator credentials to access the API.
    DescribeFolderContents -> Maybe (Sensitive Text)
authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The contents to include. Specify \"INITIALIZED\" to include initialized
    -- documents.
    DescribeFolderContents -> Maybe Text
include :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of items to return with this call.
    DescribeFolderContents -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The marker for the next set of results. This marker was received from a
    -- previous call.
    DescribeFolderContents -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The order for the contents of the folder.
    DescribeFolderContents -> Maybe OrderType
order :: Prelude.Maybe OrderType,
    -- | The sorting criteria.
    DescribeFolderContents -> Maybe ResourceSortType
sort :: Prelude.Maybe ResourceSortType,
    -- | The type of items.
    DescribeFolderContents -> Maybe FolderContentType
type' :: Prelude.Maybe FolderContentType,
    -- | The ID of the folder.
    DescribeFolderContents -> Text
folderId :: Prelude.Text
  }
  deriving (DescribeFolderContents -> DescribeFolderContents -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeFolderContents -> DescribeFolderContents -> Bool
$c/= :: DescribeFolderContents -> DescribeFolderContents -> Bool
== :: DescribeFolderContents -> DescribeFolderContents -> Bool
$c== :: DescribeFolderContents -> DescribeFolderContents -> Bool
Prelude.Eq, Int -> DescribeFolderContents -> ShowS
[DescribeFolderContents] -> ShowS
DescribeFolderContents -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeFolderContents] -> ShowS
$cshowList :: [DescribeFolderContents] -> ShowS
show :: DescribeFolderContents -> String
$cshow :: DescribeFolderContents -> String
showsPrec :: Int -> DescribeFolderContents -> ShowS
$cshowsPrec :: Int -> DescribeFolderContents -> ShowS
Prelude.Show, forall x. Rep DescribeFolderContents x -> DescribeFolderContents
forall x. DescribeFolderContents -> Rep DescribeFolderContents x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeFolderContents x -> DescribeFolderContents
$cfrom :: forall x. DescribeFolderContents -> Rep DescribeFolderContents x
Prelude.Generic)

-- |
-- Create a value of 'DescribeFolderContents' 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:
--
-- 'authenticationToken', 'describeFolderContents_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
--
-- 'include', 'describeFolderContents_include' - The contents to include. Specify \"INITIALIZED\" to include initialized
-- documents.
--
-- 'limit', 'describeFolderContents_limit' - The maximum number of items to return with this call.
--
-- 'marker', 'describeFolderContents_marker' - The marker for the next set of results. This marker was received from a
-- previous call.
--
-- 'order', 'describeFolderContents_order' - The order for the contents of the folder.
--
-- 'sort', 'describeFolderContents_sort' - The sorting criteria.
--
-- 'type'', 'describeFolderContents_type' - The type of items.
--
-- 'folderId', 'describeFolderContents_folderId' - The ID of the folder.
newDescribeFolderContents ::
  -- | 'folderId'
  Prelude.Text ->
  DescribeFolderContents
newDescribeFolderContents :: Text -> DescribeFolderContents
newDescribeFolderContents Text
pFolderId_ =
  DescribeFolderContents'
    { $sel:authenticationToken:DescribeFolderContents' :: Maybe (Sensitive Text)
authenticationToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:include:DescribeFolderContents' :: Maybe Text
include = forall a. Maybe a
Prelude.Nothing,
      $sel:limit:DescribeFolderContents' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeFolderContents' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:order:DescribeFolderContents' :: Maybe OrderType
order = forall a. Maybe a
Prelude.Nothing,
      $sel:sort:DescribeFolderContents' :: Maybe ResourceSortType
sort = forall a. Maybe a
Prelude.Nothing,
      $sel:type':DescribeFolderContents' :: Maybe FolderContentType
type' = forall a. Maybe a
Prelude.Nothing,
      $sel:folderId:DescribeFolderContents' :: Text
folderId = Text
pFolderId_
    }

-- | Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
describeFolderContents_authenticationToken :: Lens.Lens' DescribeFolderContents (Prelude.Maybe Prelude.Text)
describeFolderContents_authenticationToken :: Lens' DescribeFolderContents (Maybe Text)
describeFolderContents_authenticationToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContents' {Maybe (Sensitive Text)
authenticationToken :: Maybe (Sensitive Text)
$sel:authenticationToken:DescribeFolderContents' :: DescribeFolderContents -> Maybe (Sensitive Text)
authenticationToken} -> Maybe (Sensitive Text)
authenticationToken) (\s :: DescribeFolderContents
s@DescribeFolderContents' {} Maybe (Sensitive Text)
a -> DescribeFolderContents
s {$sel:authenticationToken:DescribeFolderContents' :: Maybe (Sensitive Text)
authenticationToken = Maybe (Sensitive Text)
a} :: DescribeFolderContents) 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 a. Iso' (Sensitive a) a
Data._Sensitive

-- | The contents to include. Specify \"INITIALIZED\" to include initialized
-- documents.
describeFolderContents_include :: Lens.Lens' DescribeFolderContents (Prelude.Maybe Prelude.Text)
describeFolderContents_include :: Lens' DescribeFolderContents (Maybe Text)
describeFolderContents_include = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContents' {Maybe Text
include :: Maybe Text
$sel:include:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
include} -> Maybe Text
include) (\s :: DescribeFolderContents
s@DescribeFolderContents' {} Maybe Text
a -> DescribeFolderContents
s {$sel:include:DescribeFolderContents' :: Maybe Text
include = Maybe Text
a} :: DescribeFolderContents)

-- | The maximum number of items to return with this call.
describeFolderContents_limit :: Lens.Lens' DescribeFolderContents (Prelude.Maybe Prelude.Natural)
describeFolderContents_limit :: Lens' DescribeFolderContents (Maybe Natural)
describeFolderContents_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContents' {Maybe Natural
limit :: Maybe Natural
$sel:limit:DescribeFolderContents' :: DescribeFolderContents -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: DescribeFolderContents
s@DescribeFolderContents' {} Maybe Natural
a -> DescribeFolderContents
s {$sel:limit:DescribeFolderContents' :: Maybe Natural
limit = Maybe Natural
a} :: DescribeFolderContents)

-- | The marker for the next set of results. This marker was received from a
-- previous call.
describeFolderContents_marker :: Lens.Lens' DescribeFolderContents (Prelude.Maybe Prelude.Text)
describeFolderContents_marker :: Lens' DescribeFolderContents (Maybe Text)
describeFolderContents_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContents' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeFolderContents
s@DescribeFolderContents' {} Maybe Text
a -> DescribeFolderContents
s {$sel:marker:DescribeFolderContents' :: Maybe Text
marker = Maybe Text
a} :: DescribeFolderContents)

-- | The order for the contents of the folder.
describeFolderContents_order :: Lens.Lens' DescribeFolderContents (Prelude.Maybe OrderType)
describeFolderContents_order :: Lens' DescribeFolderContents (Maybe OrderType)
describeFolderContents_order = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContents' {Maybe OrderType
order :: Maybe OrderType
$sel:order:DescribeFolderContents' :: DescribeFolderContents -> Maybe OrderType
order} -> Maybe OrderType
order) (\s :: DescribeFolderContents
s@DescribeFolderContents' {} Maybe OrderType
a -> DescribeFolderContents
s {$sel:order:DescribeFolderContents' :: Maybe OrderType
order = Maybe OrderType
a} :: DescribeFolderContents)

-- | The sorting criteria.
describeFolderContents_sort :: Lens.Lens' DescribeFolderContents (Prelude.Maybe ResourceSortType)
describeFolderContents_sort :: Lens' DescribeFolderContents (Maybe ResourceSortType)
describeFolderContents_sort = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContents' {Maybe ResourceSortType
sort :: Maybe ResourceSortType
$sel:sort:DescribeFolderContents' :: DescribeFolderContents -> Maybe ResourceSortType
sort} -> Maybe ResourceSortType
sort) (\s :: DescribeFolderContents
s@DescribeFolderContents' {} Maybe ResourceSortType
a -> DescribeFolderContents
s {$sel:sort:DescribeFolderContents' :: Maybe ResourceSortType
sort = Maybe ResourceSortType
a} :: DescribeFolderContents)

-- | The type of items.
describeFolderContents_type :: Lens.Lens' DescribeFolderContents (Prelude.Maybe FolderContentType)
describeFolderContents_type :: Lens' DescribeFolderContents (Maybe FolderContentType)
describeFolderContents_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContents' {Maybe FolderContentType
type' :: Maybe FolderContentType
$sel:type':DescribeFolderContents' :: DescribeFolderContents -> Maybe FolderContentType
type'} -> Maybe FolderContentType
type') (\s :: DescribeFolderContents
s@DescribeFolderContents' {} Maybe FolderContentType
a -> DescribeFolderContents
s {$sel:type':DescribeFolderContents' :: Maybe FolderContentType
type' = Maybe FolderContentType
a} :: DescribeFolderContents)

-- | The ID of the folder.
describeFolderContents_folderId :: Lens.Lens' DescribeFolderContents Prelude.Text
describeFolderContents_folderId :: Lens' DescribeFolderContents Text
describeFolderContents_folderId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContents' {Text
folderId :: Text
$sel:folderId:DescribeFolderContents' :: DescribeFolderContents -> Text
folderId} -> Text
folderId) (\s :: DescribeFolderContents
s@DescribeFolderContents' {} Text
a -> DescribeFolderContents
s {$sel:folderId:DescribeFolderContents' :: Text
folderId = Text
a} :: DescribeFolderContents)

instance Core.AWSPager DescribeFolderContents where
  page :: DescribeFolderContents
-> AWSResponse DescribeFolderContents
-> Maybe DescribeFolderContents
page DescribeFolderContents
rq AWSResponse DescribeFolderContents
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeFolderContents
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeFolderContentsResponse (Maybe Text)
describeFolderContentsResponse_marker
            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 DescribeFolderContents
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeFolderContentsResponse (Maybe [FolderMetadata])
describeFolderContentsResponse_folders
            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 DescribeFolderContents
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeFolderContentsResponse (Maybe [DocumentMetadata])
describeFolderContentsResponse_documents
            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.$ DescribeFolderContents
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeFolderContents (Maybe Text)
describeFolderContents_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeFolderContents
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeFolderContentsResponse (Maybe Text)
describeFolderContentsResponse_marker
          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 DescribeFolderContents where
  type
    AWSResponse DescribeFolderContents =
      DescribeFolderContentsResponse
  request :: (Service -> Service)
-> DescribeFolderContents -> Request DescribeFolderContents
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeFolderContents
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeFolderContents)))
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 [DocumentMetadata]
-> Maybe [FolderMetadata]
-> Maybe Text
-> Int
-> DescribeFolderContentsResponse
DescribeFolderContentsResponse'
            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
"Documents" 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
"Folders" 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
"Marker")
            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 DescribeFolderContents where
  hashWithSalt :: Int -> DescribeFolderContents -> Int
hashWithSalt Int
_salt DescribeFolderContents' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe FolderContentType
Maybe OrderType
Maybe ResourceSortType
Text
folderId :: Text
type' :: Maybe FolderContentType
sort :: Maybe ResourceSortType
order :: Maybe OrderType
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DescribeFolderContents' :: DescribeFolderContents -> Text
$sel:type':DescribeFolderContents' :: DescribeFolderContents -> Maybe FolderContentType
$sel:sort:DescribeFolderContents' :: DescribeFolderContents -> Maybe ResourceSortType
$sel:order:DescribeFolderContents' :: DescribeFolderContents -> Maybe OrderType
$sel:marker:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:limit:DescribeFolderContents' :: DescribeFolderContents -> Maybe Natural
$sel:include:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:authenticationToken:DescribeFolderContents' :: DescribeFolderContents -> Maybe (Sensitive Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
authenticationToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
include
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OrderType
order
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceSortType
sort
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FolderContentType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
folderId

instance Prelude.NFData DescribeFolderContents where
  rnf :: DescribeFolderContents -> ()
rnf DescribeFolderContents' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe FolderContentType
Maybe OrderType
Maybe ResourceSortType
Text
folderId :: Text
type' :: Maybe FolderContentType
sort :: Maybe ResourceSortType
order :: Maybe OrderType
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DescribeFolderContents' :: DescribeFolderContents -> Text
$sel:type':DescribeFolderContents' :: DescribeFolderContents -> Maybe FolderContentType
$sel:sort:DescribeFolderContents' :: DescribeFolderContents -> Maybe ResourceSortType
$sel:order:DescribeFolderContents' :: DescribeFolderContents -> Maybe OrderType
$sel:marker:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:limit:DescribeFolderContents' :: DescribeFolderContents -> Maybe Natural
$sel:include:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:authenticationToken:DescribeFolderContents' :: DescribeFolderContents -> Maybe (Sensitive Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
authenticationToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
include
      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
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OrderType
order
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceSortType
sort
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FolderContentType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
folderId

instance Data.ToHeaders DescribeFolderContents where
  toHeaders :: DescribeFolderContents -> ResponseHeaders
toHeaders DescribeFolderContents' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe FolderContentType
Maybe OrderType
Maybe ResourceSortType
Text
folderId :: Text
type' :: Maybe FolderContentType
sort :: Maybe ResourceSortType
order :: Maybe OrderType
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DescribeFolderContents' :: DescribeFolderContents -> Text
$sel:type':DescribeFolderContents' :: DescribeFolderContents -> Maybe FolderContentType
$sel:sort:DescribeFolderContents' :: DescribeFolderContents -> Maybe ResourceSortType
$sel:order:DescribeFolderContents' :: DescribeFolderContents -> Maybe OrderType
$sel:marker:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:limit:DescribeFolderContents' :: DescribeFolderContents -> Maybe Natural
$sel:include:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:authenticationToken:DescribeFolderContents' :: DescribeFolderContents -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ HeaderName
"Authentication" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe (Sensitive Text)
authenticationToken,
        HeaderName
"Content-Type"
          forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# (ByteString
"application/x-amz-json-1.1" :: Prelude.ByteString)
      ]

instance Data.ToPath DescribeFolderContents where
  toPath :: DescribeFolderContents -> ByteString
toPath DescribeFolderContents' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe FolderContentType
Maybe OrderType
Maybe ResourceSortType
Text
folderId :: Text
type' :: Maybe FolderContentType
sort :: Maybe ResourceSortType
order :: Maybe OrderType
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DescribeFolderContents' :: DescribeFolderContents -> Text
$sel:type':DescribeFolderContents' :: DescribeFolderContents -> Maybe FolderContentType
$sel:sort:DescribeFolderContents' :: DescribeFolderContents -> Maybe ResourceSortType
$sel:order:DescribeFolderContents' :: DescribeFolderContents -> Maybe OrderType
$sel:marker:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:limit:DescribeFolderContents' :: DescribeFolderContents -> Maybe Natural
$sel:include:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:authenticationToken:DescribeFolderContents' :: DescribeFolderContents -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/api/v1/folders/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
folderId, ByteString
"/contents"]

instance Data.ToQuery DescribeFolderContents where
  toQuery :: DescribeFolderContents -> QueryString
toQuery DescribeFolderContents' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe FolderContentType
Maybe OrderType
Maybe ResourceSortType
Text
folderId :: Text
type' :: Maybe FolderContentType
sort :: Maybe ResourceSortType
order :: Maybe OrderType
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DescribeFolderContents' :: DescribeFolderContents -> Text
$sel:type':DescribeFolderContents' :: DescribeFolderContents -> Maybe FolderContentType
$sel:sort:DescribeFolderContents' :: DescribeFolderContents -> Maybe ResourceSortType
$sel:order:DescribeFolderContents' :: DescribeFolderContents -> Maybe OrderType
$sel:marker:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:limit:DescribeFolderContents' :: DescribeFolderContents -> Maybe Natural
$sel:include:DescribeFolderContents' :: DescribeFolderContents -> Maybe Text
$sel:authenticationToken:DescribeFolderContents' :: DescribeFolderContents -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"include" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
include,
        ByteString
"limit" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
limit,
        ByteString
"marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"order" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe OrderType
order,
        ByteString
"sort" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ResourceSortType
sort,
        ByteString
"type" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe FolderContentType
type'
      ]

-- | /See:/ 'newDescribeFolderContentsResponse' smart constructor.
data DescribeFolderContentsResponse = DescribeFolderContentsResponse'
  { -- | The documents in the specified folder.
    DescribeFolderContentsResponse -> Maybe [DocumentMetadata]
documents :: Prelude.Maybe [DocumentMetadata],
    -- | The subfolders in the specified folder.
    DescribeFolderContentsResponse -> Maybe [FolderMetadata]
folders :: Prelude.Maybe [FolderMetadata],
    -- | The marker to use when requesting the next set of results. If there are
    -- no additional results, the string is empty.
    DescribeFolderContentsResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeFolderContentsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeFolderContentsResponse
-> DescribeFolderContentsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeFolderContentsResponse
-> DescribeFolderContentsResponse -> Bool
$c/= :: DescribeFolderContentsResponse
-> DescribeFolderContentsResponse -> Bool
== :: DescribeFolderContentsResponse
-> DescribeFolderContentsResponse -> Bool
$c== :: DescribeFolderContentsResponse
-> DescribeFolderContentsResponse -> Bool
Prelude.Eq, Int -> DescribeFolderContentsResponse -> ShowS
[DescribeFolderContentsResponse] -> ShowS
DescribeFolderContentsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeFolderContentsResponse] -> ShowS
$cshowList :: [DescribeFolderContentsResponse] -> ShowS
show :: DescribeFolderContentsResponse -> String
$cshow :: DescribeFolderContentsResponse -> String
showsPrec :: Int -> DescribeFolderContentsResponse -> ShowS
$cshowsPrec :: Int -> DescribeFolderContentsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeFolderContentsResponse x
-> DescribeFolderContentsResponse
forall x.
DescribeFolderContentsResponse
-> Rep DescribeFolderContentsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeFolderContentsResponse x
-> DescribeFolderContentsResponse
$cfrom :: forall x.
DescribeFolderContentsResponse
-> Rep DescribeFolderContentsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeFolderContentsResponse' 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:
--
-- 'documents', 'describeFolderContentsResponse_documents' - The documents in the specified folder.
--
-- 'folders', 'describeFolderContentsResponse_folders' - The subfolders in the specified folder.
--
-- 'marker', 'describeFolderContentsResponse_marker' - The marker to use when requesting the next set of results. If there are
-- no additional results, the string is empty.
--
-- 'httpStatus', 'describeFolderContentsResponse_httpStatus' - The response's http status code.
newDescribeFolderContentsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeFolderContentsResponse
newDescribeFolderContentsResponse :: Int -> DescribeFolderContentsResponse
newDescribeFolderContentsResponse Int
pHttpStatus_ =
  DescribeFolderContentsResponse'
    { $sel:documents:DescribeFolderContentsResponse' :: Maybe [DocumentMetadata]
documents =
        forall a. Maybe a
Prelude.Nothing,
      $sel:folders:DescribeFolderContentsResponse' :: Maybe [FolderMetadata]
folders = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeFolderContentsResponse' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeFolderContentsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The documents in the specified folder.
describeFolderContentsResponse_documents :: Lens.Lens' DescribeFolderContentsResponse (Prelude.Maybe [DocumentMetadata])
describeFolderContentsResponse_documents :: Lens' DescribeFolderContentsResponse (Maybe [DocumentMetadata])
describeFolderContentsResponse_documents = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContentsResponse' {Maybe [DocumentMetadata]
documents :: Maybe [DocumentMetadata]
$sel:documents:DescribeFolderContentsResponse' :: DescribeFolderContentsResponse -> Maybe [DocumentMetadata]
documents} -> Maybe [DocumentMetadata]
documents) (\s :: DescribeFolderContentsResponse
s@DescribeFolderContentsResponse' {} Maybe [DocumentMetadata]
a -> DescribeFolderContentsResponse
s {$sel:documents:DescribeFolderContentsResponse' :: Maybe [DocumentMetadata]
documents = Maybe [DocumentMetadata]
a} :: DescribeFolderContentsResponse) 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 subfolders in the specified folder.
describeFolderContentsResponse_folders :: Lens.Lens' DescribeFolderContentsResponse (Prelude.Maybe [FolderMetadata])
describeFolderContentsResponse_folders :: Lens' DescribeFolderContentsResponse (Maybe [FolderMetadata])
describeFolderContentsResponse_folders = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContentsResponse' {Maybe [FolderMetadata]
folders :: Maybe [FolderMetadata]
$sel:folders:DescribeFolderContentsResponse' :: DescribeFolderContentsResponse -> Maybe [FolderMetadata]
folders} -> Maybe [FolderMetadata]
folders) (\s :: DescribeFolderContentsResponse
s@DescribeFolderContentsResponse' {} Maybe [FolderMetadata]
a -> DescribeFolderContentsResponse
s {$sel:folders:DescribeFolderContentsResponse' :: Maybe [FolderMetadata]
folders = Maybe [FolderMetadata]
a} :: DescribeFolderContentsResponse) 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 marker to use when requesting the next set of results. If there are
-- no additional results, the string is empty.
describeFolderContentsResponse_marker :: Lens.Lens' DescribeFolderContentsResponse (Prelude.Maybe Prelude.Text)
describeFolderContentsResponse_marker :: Lens' DescribeFolderContentsResponse (Maybe Text)
describeFolderContentsResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFolderContentsResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeFolderContentsResponse' :: DescribeFolderContentsResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeFolderContentsResponse
s@DescribeFolderContentsResponse' {} Maybe Text
a -> DescribeFolderContentsResponse
s {$sel:marker:DescribeFolderContentsResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeFolderContentsResponse)

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

instance
  Prelude.NFData
    DescribeFolderContentsResponse
  where
  rnf :: DescribeFolderContentsResponse -> ()
rnf DescribeFolderContentsResponse' {Int
Maybe [FolderMetadata]
Maybe [DocumentMetadata]
Maybe Text
httpStatus :: Int
marker :: Maybe Text
folders :: Maybe [FolderMetadata]
documents :: Maybe [DocumentMetadata]
$sel:httpStatus:DescribeFolderContentsResponse' :: DescribeFolderContentsResponse -> Int
$sel:marker:DescribeFolderContentsResponse' :: DescribeFolderContentsResponse -> Maybe Text
$sel:folders:DescribeFolderContentsResponse' :: DescribeFolderContentsResponse -> Maybe [FolderMetadata]
$sel:documents:DescribeFolderContentsResponse' :: DescribeFolderContentsResponse -> Maybe [DocumentMetadata]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [DocumentMetadata]
documents
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [FolderMetadata]
folders
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus