{-# 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.Chime.DeleteVoiceConnector
-- 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 the specified Amazon Chime Voice Connector. Any phone numbers
-- associated with the Amazon Chime Voice Connector must be disassociated
-- from it before it can be deleted.
module Amazonka.Chime.DeleteVoiceConnector
  ( -- * Creating a Request
    DeleteVoiceConnector (..),
    newDeleteVoiceConnector,

    -- * Request Lenses
    deleteVoiceConnector_voiceConnectorId,

    -- * Destructuring the Response
    DeleteVoiceConnectorResponse (..),
    newDeleteVoiceConnectorResponse,
  )
where

import Amazonka.Chime.Types
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

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

-- |
-- Create a value of 'DeleteVoiceConnector' 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:
--
-- 'voiceConnectorId', 'deleteVoiceConnector_voiceConnectorId' - The Amazon Chime Voice Connector ID.
newDeleteVoiceConnector ::
  -- | 'voiceConnectorId'
  Prelude.Text ->
  DeleteVoiceConnector
newDeleteVoiceConnector :: Text -> DeleteVoiceConnector
newDeleteVoiceConnector Text
pVoiceConnectorId_ =
  DeleteVoiceConnector'
    { $sel:voiceConnectorId:DeleteVoiceConnector' :: Text
voiceConnectorId =
        Text
pVoiceConnectorId_
    }

-- | The Amazon Chime Voice Connector ID.
deleteVoiceConnector_voiceConnectorId :: Lens.Lens' DeleteVoiceConnector Prelude.Text
deleteVoiceConnector_voiceConnectorId :: Lens' DeleteVoiceConnector Text
deleteVoiceConnector_voiceConnectorId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteVoiceConnector' {Text
voiceConnectorId :: Text
$sel:voiceConnectorId:DeleteVoiceConnector' :: DeleteVoiceConnector -> Text
voiceConnectorId} -> Text
voiceConnectorId) (\s :: DeleteVoiceConnector
s@DeleteVoiceConnector' {} Text
a -> DeleteVoiceConnector
s {$sel:voiceConnectorId:DeleteVoiceConnector' :: Text
voiceConnectorId = Text
a} :: DeleteVoiceConnector)

instance Core.AWSRequest DeleteVoiceConnector where
  type
    AWSResponse DeleteVoiceConnector =
      DeleteVoiceConnectorResponse
  request :: (Service -> Service)
-> DeleteVoiceConnector -> Request DeleteVoiceConnector
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 DeleteVoiceConnector
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteVoiceConnector)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteVoiceConnectorResponse
DeleteVoiceConnectorResponse'

instance Prelude.Hashable DeleteVoiceConnector where
  hashWithSalt :: Int -> DeleteVoiceConnector -> Int
hashWithSalt Int
_salt DeleteVoiceConnector' {Text
voiceConnectorId :: Text
$sel:voiceConnectorId:DeleteVoiceConnector' :: DeleteVoiceConnector -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
voiceConnectorId

instance Prelude.NFData DeleteVoiceConnector where
  rnf :: DeleteVoiceConnector -> ()
rnf DeleteVoiceConnector' {Text
voiceConnectorId :: Text
$sel:voiceConnectorId:DeleteVoiceConnector' :: DeleteVoiceConnector -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
voiceConnectorId

instance Data.ToHeaders DeleteVoiceConnector where
  toHeaders :: DeleteVoiceConnector -> [Header]
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DeleteVoiceConnector where
  toPath :: DeleteVoiceConnector -> ByteString
toPath DeleteVoiceConnector' {Text
voiceConnectorId :: Text
$sel:voiceConnectorId:DeleteVoiceConnector' :: DeleteVoiceConnector -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/voice-connectors/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
voiceConnectorId]

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

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

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

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