{-# 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.DeleteConnectClientAddIn
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes a client-add-in for Amazon Connect that is configured within a
-- directory.
module Amazonka.WorkSpaces.DeleteConnectClientAddIn
  ( -- * Creating a Request
    DeleteConnectClientAddIn (..),
    newDeleteConnectClientAddIn,

    -- * Request Lenses
    deleteConnectClientAddIn_addInId,
    deleteConnectClientAddIn_resourceId,

    -- * Destructuring the Response
    DeleteConnectClientAddInResponse (..),
    newDeleteConnectClientAddInResponse,

    -- * Response Lenses
    deleteConnectClientAddInResponse_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:/ 'newDeleteConnectClientAddIn' smart constructor.
data DeleteConnectClientAddIn = DeleteConnectClientAddIn'
  { -- | The identifier of the client add-in to delete.
    DeleteConnectClientAddIn -> Text
addInId :: Prelude.Text,
    -- | The directory identifier for which the client add-in is configured.
    DeleteConnectClientAddIn -> Text
resourceId :: Prelude.Text
  }
  deriving (DeleteConnectClientAddIn -> DeleteConnectClientAddIn -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteConnectClientAddIn -> DeleteConnectClientAddIn -> Bool
$c/= :: DeleteConnectClientAddIn -> DeleteConnectClientAddIn -> Bool
== :: DeleteConnectClientAddIn -> DeleteConnectClientAddIn -> Bool
$c== :: DeleteConnectClientAddIn -> DeleteConnectClientAddIn -> Bool
Prelude.Eq, ReadPrec [DeleteConnectClientAddIn]
ReadPrec DeleteConnectClientAddIn
Int -> ReadS DeleteConnectClientAddIn
ReadS [DeleteConnectClientAddIn]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteConnectClientAddIn]
$creadListPrec :: ReadPrec [DeleteConnectClientAddIn]
readPrec :: ReadPrec DeleteConnectClientAddIn
$creadPrec :: ReadPrec DeleteConnectClientAddIn
readList :: ReadS [DeleteConnectClientAddIn]
$creadList :: ReadS [DeleteConnectClientAddIn]
readsPrec :: Int -> ReadS DeleteConnectClientAddIn
$creadsPrec :: Int -> ReadS DeleteConnectClientAddIn
Prelude.Read, Int -> DeleteConnectClientAddIn -> ShowS
[DeleteConnectClientAddIn] -> ShowS
DeleteConnectClientAddIn -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteConnectClientAddIn] -> ShowS
$cshowList :: [DeleteConnectClientAddIn] -> ShowS
show :: DeleteConnectClientAddIn -> String
$cshow :: DeleteConnectClientAddIn -> String
showsPrec :: Int -> DeleteConnectClientAddIn -> ShowS
$cshowsPrec :: Int -> DeleteConnectClientAddIn -> ShowS
Prelude.Show, forall x.
Rep DeleteConnectClientAddIn x -> DeleteConnectClientAddIn
forall x.
DeleteConnectClientAddIn -> Rep DeleteConnectClientAddIn x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteConnectClientAddIn x -> DeleteConnectClientAddIn
$cfrom :: forall x.
DeleteConnectClientAddIn -> Rep DeleteConnectClientAddIn x
Prelude.Generic)

-- |
-- Create a value of 'DeleteConnectClientAddIn' 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:
--
-- 'addInId', 'deleteConnectClientAddIn_addInId' - The identifier of the client add-in to delete.
--
-- 'resourceId', 'deleteConnectClientAddIn_resourceId' - The directory identifier for which the client add-in is configured.
newDeleteConnectClientAddIn ::
  -- | 'addInId'
  Prelude.Text ->
  -- | 'resourceId'
  Prelude.Text ->
  DeleteConnectClientAddIn
newDeleteConnectClientAddIn :: Text -> Text -> DeleteConnectClientAddIn
newDeleteConnectClientAddIn Text
pAddInId_ Text
pResourceId_ =
  DeleteConnectClientAddIn'
    { $sel:addInId:DeleteConnectClientAddIn' :: Text
addInId = Text
pAddInId_,
      $sel:resourceId:DeleteConnectClientAddIn' :: Text
resourceId = Text
pResourceId_
    }

-- | The identifier of the client add-in to delete.
deleteConnectClientAddIn_addInId :: Lens.Lens' DeleteConnectClientAddIn Prelude.Text
deleteConnectClientAddIn_addInId :: Lens' DeleteConnectClientAddIn Text
deleteConnectClientAddIn_addInId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteConnectClientAddIn' {Text
addInId :: Text
$sel:addInId:DeleteConnectClientAddIn' :: DeleteConnectClientAddIn -> Text
addInId} -> Text
addInId) (\s :: DeleteConnectClientAddIn
s@DeleteConnectClientAddIn' {} Text
a -> DeleteConnectClientAddIn
s {$sel:addInId:DeleteConnectClientAddIn' :: Text
addInId = Text
a} :: DeleteConnectClientAddIn)

-- | The directory identifier for which the client add-in is configured.
deleteConnectClientAddIn_resourceId :: Lens.Lens' DeleteConnectClientAddIn Prelude.Text
deleteConnectClientAddIn_resourceId :: Lens' DeleteConnectClientAddIn Text
deleteConnectClientAddIn_resourceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteConnectClientAddIn' {Text
resourceId :: Text
$sel:resourceId:DeleteConnectClientAddIn' :: DeleteConnectClientAddIn -> Text
resourceId} -> Text
resourceId) (\s :: DeleteConnectClientAddIn
s@DeleteConnectClientAddIn' {} Text
a -> DeleteConnectClientAddIn
s {$sel:resourceId:DeleteConnectClientAddIn' :: Text
resourceId = Text
a} :: DeleteConnectClientAddIn)

instance Core.AWSRequest DeleteConnectClientAddIn where
  type
    AWSResponse DeleteConnectClientAddIn =
      DeleteConnectClientAddInResponse
  request :: (Service -> Service)
-> DeleteConnectClientAddIn -> Request DeleteConnectClientAddIn
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 DeleteConnectClientAddIn
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteConnectClientAddIn)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> DeleteConnectClientAddInResponse
DeleteConnectClientAddInResponse'
            forall (f :: * -> *) a b. Functor 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 DeleteConnectClientAddIn where
  hashWithSalt :: Int -> DeleteConnectClientAddIn -> Int
hashWithSalt Int
_salt DeleteConnectClientAddIn' {Text
resourceId :: Text
addInId :: Text
$sel:resourceId:DeleteConnectClientAddIn' :: DeleteConnectClientAddIn -> Text
$sel:addInId:DeleteConnectClientAddIn' :: DeleteConnectClientAddIn -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
addInId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
resourceId

instance Prelude.NFData DeleteConnectClientAddIn where
  rnf :: DeleteConnectClientAddIn -> ()
rnf DeleteConnectClientAddIn' {Text
resourceId :: Text
addInId :: Text
$sel:resourceId:DeleteConnectClientAddIn' :: DeleteConnectClientAddIn -> Text
$sel:addInId:DeleteConnectClientAddIn' :: DeleteConnectClientAddIn -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
addInId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
resourceId

instance Data.ToHeaders DeleteConnectClientAddIn where
  toHeaders :: DeleteConnectClientAddIn -> 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.DeleteConnectClientAddIn" ::
                          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 DeleteConnectClientAddIn where
  toJSON :: DeleteConnectClientAddIn -> Value
toJSON DeleteConnectClientAddIn' {Text
resourceId :: Text
addInId :: Text
$sel:resourceId:DeleteConnectClientAddIn' :: DeleteConnectClientAddIn -> Text
$sel:addInId:DeleteConnectClientAddIn' :: DeleteConnectClientAddIn -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"AddInId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
addInId),
            forall a. a -> Maybe a
Prelude.Just (Key
"ResourceId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
resourceId)
          ]
      )

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

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

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

-- |
-- Create a value of 'DeleteConnectClientAddInResponse' 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:
--
-- 'httpStatus', 'deleteConnectClientAddInResponse_httpStatus' - The response's http status code.
newDeleteConnectClientAddInResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteConnectClientAddInResponse
newDeleteConnectClientAddInResponse :: Int -> DeleteConnectClientAddInResponse
newDeleteConnectClientAddInResponse Int
pHttpStatus_ =
  DeleteConnectClientAddInResponse'
    { $sel:httpStatus:DeleteConnectClientAddInResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    DeleteConnectClientAddInResponse
  where
  rnf :: DeleteConnectClientAddInResponse -> ()
rnf DeleteConnectClientAddInResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteConnectClientAddInResponse' :: DeleteConnectClientAddInResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus