{-# 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.ChimeSdkVoice.PutVoiceConnectorTerminationCredentials
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- -- | Undocumented operation.
module Amazonka.ChimeSdkVoice.PutVoiceConnectorTerminationCredentials
  ( -- * Creating a Request
    PutVoiceConnectorTerminationCredentials (..),
    newPutVoiceConnectorTerminationCredentials,

    -- * Request Lenses
    putVoiceConnectorTerminationCredentials_credentials,
    putVoiceConnectorTerminationCredentials_voiceConnectorId,

    -- * Destructuring the Response
    PutVoiceConnectorTerminationCredentialsResponse (..),
    newPutVoiceConnectorTerminationCredentialsResponse,
  )
where

import Amazonka.ChimeSdkVoice.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:/ 'newPutVoiceConnectorTerminationCredentials' smart constructor.
data PutVoiceConnectorTerminationCredentials = PutVoiceConnectorTerminationCredentials'
  { PutVoiceConnectorTerminationCredentials -> Maybe [Credential]
credentials :: Prelude.Maybe [Credential],
    PutVoiceConnectorTerminationCredentials -> Text
voiceConnectorId :: Prelude.Text
  }
  deriving (PutVoiceConnectorTerminationCredentials
-> PutVoiceConnectorTerminationCredentials -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutVoiceConnectorTerminationCredentials
-> PutVoiceConnectorTerminationCredentials -> Bool
$c/= :: PutVoiceConnectorTerminationCredentials
-> PutVoiceConnectorTerminationCredentials -> Bool
== :: PutVoiceConnectorTerminationCredentials
-> PutVoiceConnectorTerminationCredentials -> Bool
$c== :: PutVoiceConnectorTerminationCredentials
-> PutVoiceConnectorTerminationCredentials -> Bool
Prelude.Eq, Int -> PutVoiceConnectorTerminationCredentials -> ShowS
[PutVoiceConnectorTerminationCredentials] -> ShowS
PutVoiceConnectorTerminationCredentials -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutVoiceConnectorTerminationCredentials] -> ShowS
$cshowList :: [PutVoiceConnectorTerminationCredentials] -> ShowS
show :: PutVoiceConnectorTerminationCredentials -> String
$cshow :: PutVoiceConnectorTerminationCredentials -> String
showsPrec :: Int -> PutVoiceConnectorTerminationCredentials -> ShowS
$cshowsPrec :: Int -> PutVoiceConnectorTerminationCredentials -> ShowS
Prelude.Show, forall x.
Rep PutVoiceConnectorTerminationCredentials x
-> PutVoiceConnectorTerminationCredentials
forall x.
PutVoiceConnectorTerminationCredentials
-> Rep PutVoiceConnectorTerminationCredentials x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PutVoiceConnectorTerminationCredentials x
-> PutVoiceConnectorTerminationCredentials
$cfrom :: forall x.
PutVoiceConnectorTerminationCredentials
-> Rep PutVoiceConnectorTerminationCredentials x
Prelude.Generic)

-- |
-- Create a value of 'PutVoiceConnectorTerminationCredentials' 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:
--
-- 'credentials', 'putVoiceConnectorTerminationCredentials_credentials' - Undocumented member.
--
-- 'voiceConnectorId', 'putVoiceConnectorTerminationCredentials_voiceConnectorId' - Undocumented member.
newPutVoiceConnectorTerminationCredentials ::
  -- | 'voiceConnectorId'
  Prelude.Text ->
  PutVoiceConnectorTerminationCredentials
newPutVoiceConnectorTerminationCredentials :: Text -> PutVoiceConnectorTerminationCredentials
newPutVoiceConnectorTerminationCredentials
  Text
pVoiceConnectorId_ =
    PutVoiceConnectorTerminationCredentials'
      { $sel:credentials:PutVoiceConnectorTerminationCredentials' :: Maybe [Credential]
credentials =
          forall a. Maybe a
Prelude.Nothing,
        $sel:voiceConnectorId:PutVoiceConnectorTerminationCredentials' :: Text
voiceConnectorId =
          Text
pVoiceConnectorId_
      }

-- | Undocumented member.
putVoiceConnectorTerminationCredentials_credentials :: Lens.Lens' PutVoiceConnectorTerminationCredentials (Prelude.Maybe [Credential])
putVoiceConnectorTerminationCredentials_credentials :: Lens' PutVoiceConnectorTerminationCredentials (Maybe [Credential])
putVoiceConnectorTerminationCredentials_credentials = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutVoiceConnectorTerminationCredentials' {Maybe [Credential]
credentials :: Maybe [Credential]
$sel:credentials:PutVoiceConnectorTerminationCredentials' :: PutVoiceConnectorTerminationCredentials -> Maybe [Credential]
credentials} -> Maybe [Credential]
credentials) (\s :: PutVoiceConnectorTerminationCredentials
s@PutVoiceConnectorTerminationCredentials' {} Maybe [Credential]
a -> PutVoiceConnectorTerminationCredentials
s {$sel:credentials:PutVoiceConnectorTerminationCredentials' :: Maybe [Credential]
credentials = Maybe [Credential]
a} :: PutVoiceConnectorTerminationCredentials) 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

-- | Undocumented member.
putVoiceConnectorTerminationCredentials_voiceConnectorId :: Lens.Lens' PutVoiceConnectorTerminationCredentials Prelude.Text
putVoiceConnectorTerminationCredentials_voiceConnectorId :: Lens' PutVoiceConnectorTerminationCredentials Text
putVoiceConnectorTerminationCredentials_voiceConnectorId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutVoiceConnectorTerminationCredentials' {Text
voiceConnectorId :: Text
$sel:voiceConnectorId:PutVoiceConnectorTerminationCredentials' :: PutVoiceConnectorTerminationCredentials -> Text
voiceConnectorId} -> Text
voiceConnectorId) (\s :: PutVoiceConnectorTerminationCredentials
s@PutVoiceConnectorTerminationCredentials' {} Text
a -> PutVoiceConnectorTerminationCredentials
s {$sel:voiceConnectorId:PutVoiceConnectorTerminationCredentials' :: Text
voiceConnectorId = Text
a} :: PutVoiceConnectorTerminationCredentials)

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

instance
  Prelude.Hashable
    PutVoiceConnectorTerminationCredentials
  where
  hashWithSalt :: Int -> PutVoiceConnectorTerminationCredentials -> Int
hashWithSalt
    Int
_salt
    PutVoiceConnectorTerminationCredentials' {Maybe [Credential]
Text
voiceConnectorId :: Text
credentials :: Maybe [Credential]
$sel:voiceConnectorId:PutVoiceConnectorTerminationCredentials' :: PutVoiceConnectorTerminationCredentials -> Text
$sel:credentials:PutVoiceConnectorTerminationCredentials' :: PutVoiceConnectorTerminationCredentials -> Maybe [Credential]
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Credential]
credentials
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
voiceConnectorId

instance
  Prelude.NFData
    PutVoiceConnectorTerminationCredentials
  where
  rnf :: PutVoiceConnectorTerminationCredentials -> ()
rnf PutVoiceConnectorTerminationCredentials' {Maybe [Credential]
Text
voiceConnectorId :: Text
credentials :: Maybe [Credential]
$sel:voiceConnectorId:PutVoiceConnectorTerminationCredentials' :: PutVoiceConnectorTerminationCredentials -> Text
$sel:credentials:PutVoiceConnectorTerminationCredentials' :: PutVoiceConnectorTerminationCredentials -> Maybe [Credential]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Credential]
credentials
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
voiceConnectorId

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

instance
  Data.ToJSON
    PutVoiceConnectorTerminationCredentials
  where
  toJSON :: PutVoiceConnectorTerminationCredentials -> Value
toJSON PutVoiceConnectorTerminationCredentials' {Maybe [Credential]
Text
voiceConnectorId :: Text
credentials :: Maybe [Credential]
$sel:voiceConnectorId:PutVoiceConnectorTerminationCredentials' :: PutVoiceConnectorTerminationCredentials -> Text
$sel:credentials:PutVoiceConnectorTerminationCredentials' :: PutVoiceConnectorTerminationCredentials -> Maybe [Credential]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [(Key
"Credentials" 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 [Credential]
credentials]
      )

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

instance
  Data.ToQuery
    PutVoiceConnectorTerminationCredentials
  where
  toQuery :: PutVoiceConnectorTerminationCredentials -> QueryString
toQuery =
    forall a b. a -> b -> a
Prelude.const (forall a. Monoid a => [a] -> a
Prelude.mconcat [QueryString
"operation=put"])

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

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

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