{-# 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.DeleteFolder
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Permanently deletes the specified folder and its contents.
module Amazonka.WorkDocs.DeleteFolder
  ( -- * Creating a Request
    DeleteFolder (..),
    newDeleteFolder,

    -- * Request Lenses
    deleteFolder_authenticationToken,
    deleteFolder_folderId,

    -- * Destructuring the Response
    DeleteFolderResponse (..),
    newDeleteFolderResponse,
  )
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:/ 'newDeleteFolder' smart constructor.
data DeleteFolder = DeleteFolder'
  { -- | Amazon WorkDocs authentication token. Not required when using AWS
    -- administrator credentials to access the API.
    DeleteFolder -> Maybe (Sensitive Text)
authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The ID of the folder.
    DeleteFolder -> Text
folderId :: Prelude.Text
  }
  deriving (DeleteFolder -> DeleteFolder -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteFolder -> DeleteFolder -> Bool
$c/= :: DeleteFolder -> DeleteFolder -> Bool
== :: DeleteFolder -> DeleteFolder -> Bool
$c== :: DeleteFolder -> DeleteFolder -> Bool
Prelude.Eq, Int -> DeleteFolder -> ShowS
[DeleteFolder] -> ShowS
DeleteFolder -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteFolder] -> ShowS
$cshowList :: [DeleteFolder] -> ShowS
show :: DeleteFolder -> String
$cshow :: DeleteFolder -> String
showsPrec :: Int -> DeleteFolder -> ShowS
$cshowsPrec :: Int -> DeleteFolder -> ShowS
Prelude.Show, forall x. Rep DeleteFolder x -> DeleteFolder
forall x. DeleteFolder -> Rep DeleteFolder x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteFolder x -> DeleteFolder
$cfrom :: forall x. DeleteFolder -> Rep DeleteFolder x
Prelude.Generic)

-- |
-- Create a value of 'DeleteFolder' 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', 'deleteFolder_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
--
-- 'folderId', 'deleteFolder_folderId' - The ID of the folder.
newDeleteFolder ::
  -- | 'folderId'
  Prelude.Text ->
  DeleteFolder
newDeleteFolder :: Text -> DeleteFolder
newDeleteFolder Text
pFolderId_ =
  DeleteFolder'
    { $sel:authenticationToken:DeleteFolder' :: Maybe (Sensitive Text)
authenticationToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:folderId:DeleteFolder' :: Text
folderId = Text
pFolderId_
    }

-- | Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
deleteFolder_authenticationToken :: Lens.Lens' DeleteFolder (Prelude.Maybe Prelude.Text)
deleteFolder_authenticationToken :: Lens' DeleteFolder (Maybe Text)
deleteFolder_authenticationToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFolder' {Maybe (Sensitive Text)
authenticationToken :: Maybe (Sensitive Text)
$sel:authenticationToken:DeleteFolder' :: DeleteFolder -> Maybe (Sensitive Text)
authenticationToken} -> Maybe (Sensitive Text)
authenticationToken) (\s :: DeleteFolder
s@DeleteFolder' {} Maybe (Sensitive Text)
a -> DeleteFolder
s {$sel:authenticationToken:DeleteFolder' :: Maybe (Sensitive Text)
authenticationToken = Maybe (Sensitive Text)
a} :: DeleteFolder) 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 ID of the folder.
deleteFolder_folderId :: Lens.Lens' DeleteFolder Prelude.Text
deleteFolder_folderId :: Lens' DeleteFolder Text
deleteFolder_folderId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFolder' {Text
folderId :: Text
$sel:folderId:DeleteFolder' :: DeleteFolder -> Text
folderId} -> Text
folderId) (\s :: DeleteFolder
s@DeleteFolder' {} Text
a -> DeleteFolder
s {$sel:folderId:DeleteFolder' :: Text
folderId = Text
a} :: DeleteFolder)

instance Core.AWSRequest DeleteFolder where
  type AWSResponse DeleteFolder = DeleteFolderResponse
  request :: (Service -> Service) -> DeleteFolder -> Request DeleteFolder
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteFolder
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteFolder)))
response = forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteFolderResponse
DeleteFolderResponse'

instance Prelude.Hashable DeleteFolder where
  hashWithSalt :: Int -> DeleteFolder -> Int
hashWithSalt Int
_salt DeleteFolder' {Maybe (Sensitive Text)
Text
folderId :: Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DeleteFolder' :: DeleteFolder -> Text
$sel:authenticationToken:DeleteFolder' :: DeleteFolder -> 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` Text
folderId

instance Prelude.NFData DeleteFolder where
  rnf :: DeleteFolder -> ()
rnf DeleteFolder' {Maybe (Sensitive Text)
Text
folderId :: Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DeleteFolder' :: DeleteFolder -> Text
$sel:authenticationToken:DeleteFolder' :: DeleteFolder -> 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 Text
folderId

instance Data.ToHeaders DeleteFolder where
  toHeaders :: DeleteFolder -> [Header]
toHeaders DeleteFolder' {Maybe (Sensitive Text)
Text
folderId :: Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DeleteFolder' :: DeleteFolder -> Text
$sel:authenticationToken:DeleteFolder' :: DeleteFolder -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ HeaderName
"Authentication" forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# Maybe (Sensitive Text)
authenticationToken,
        HeaderName
"Content-Type"
          forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# (ByteString
"application/x-amz-json-1.1" :: Prelude.ByteString)
      ]

instance Data.ToPath DeleteFolder where
  toPath :: DeleteFolder -> ByteString
toPath DeleteFolder' {Maybe (Sensitive Text)
Text
folderId :: Text
authenticationToken :: Maybe (Sensitive Text)
$sel:folderId:DeleteFolder' :: DeleteFolder -> Text
$sel:authenticationToken:DeleteFolder' :: DeleteFolder -> 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]

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

-- | /See:/ 'newDeleteFolderResponse' smart constructor.
data DeleteFolderResponse = DeleteFolderResponse'
  {
  }
  deriving (DeleteFolderResponse -> DeleteFolderResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteFolderResponse -> DeleteFolderResponse -> Bool
$c/= :: DeleteFolderResponse -> DeleteFolderResponse -> Bool
== :: DeleteFolderResponse -> DeleteFolderResponse -> Bool
$c== :: DeleteFolderResponse -> DeleteFolderResponse -> Bool
Prelude.Eq, ReadPrec [DeleteFolderResponse]
ReadPrec DeleteFolderResponse
Int -> ReadS DeleteFolderResponse
ReadS [DeleteFolderResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteFolderResponse]
$creadListPrec :: ReadPrec [DeleteFolderResponse]
readPrec :: ReadPrec DeleteFolderResponse
$creadPrec :: ReadPrec DeleteFolderResponse
readList :: ReadS [DeleteFolderResponse]
$creadList :: ReadS [DeleteFolderResponse]
readsPrec :: Int -> ReadS DeleteFolderResponse
$creadsPrec :: Int -> ReadS DeleteFolderResponse
Prelude.Read, Int -> DeleteFolderResponse -> ShowS
[DeleteFolderResponse] -> ShowS
DeleteFolderResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteFolderResponse] -> ShowS
$cshowList :: [DeleteFolderResponse] -> ShowS
show :: DeleteFolderResponse -> String
$cshow :: DeleteFolderResponse -> String
showsPrec :: Int -> DeleteFolderResponse -> ShowS
$cshowsPrec :: Int -> DeleteFolderResponse -> ShowS
Prelude.Show, forall x. Rep DeleteFolderResponse x -> DeleteFolderResponse
forall x. DeleteFolderResponse -> Rep DeleteFolderResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteFolderResponse x -> DeleteFolderResponse
$cfrom :: forall x. DeleteFolderResponse -> Rep DeleteFolderResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteFolderResponse' 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.
newDeleteFolderResponse ::
  DeleteFolderResponse
newDeleteFolderResponse :: DeleteFolderResponse
newDeleteFolderResponse = DeleteFolderResponse
DeleteFolderResponse'

instance Prelude.NFData DeleteFolderResponse where
  rnf :: DeleteFolderResponse -> ()
rnf DeleteFolderResponse
_ = ()