{-# 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.VoiceId.DeleteFraudster
-- 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 fraudster from Voice ID.
module Amazonka.VoiceId.DeleteFraudster
  ( -- * Creating a Request
    DeleteFraudster (..),
    newDeleteFraudster,

    -- * Request Lenses
    deleteFraudster_domainId,
    deleteFraudster_fraudsterId,

    -- * Destructuring the Response
    DeleteFraudsterResponse (..),
    newDeleteFraudsterResponse,
  )
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.VoiceId.Types

-- | /See:/ 'newDeleteFraudster' smart constructor.
data DeleteFraudster = DeleteFraudster'
  { -- | The identifier of the domain containing the fraudster.
    DeleteFraudster -> Text
domainId :: Prelude.Text,
    -- | The identifier of the fraudster you want to delete.
    DeleteFraudster -> Sensitive Text
fraudsterId :: Data.Sensitive Prelude.Text
  }
  deriving (DeleteFraudster -> DeleteFraudster -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteFraudster -> DeleteFraudster -> Bool
$c/= :: DeleteFraudster -> DeleteFraudster -> Bool
== :: DeleteFraudster -> DeleteFraudster -> Bool
$c== :: DeleteFraudster -> DeleteFraudster -> Bool
Prelude.Eq, Int -> DeleteFraudster -> ShowS
[DeleteFraudster] -> ShowS
DeleteFraudster -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteFraudster] -> ShowS
$cshowList :: [DeleteFraudster] -> ShowS
show :: DeleteFraudster -> String
$cshow :: DeleteFraudster -> String
showsPrec :: Int -> DeleteFraudster -> ShowS
$cshowsPrec :: Int -> DeleteFraudster -> ShowS
Prelude.Show, forall x. Rep DeleteFraudster x -> DeleteFraudster
forall x. DeleteFraudster -> Rep DeleteFraudster x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteFraudster x -> DeleteFraudster
$cfrom :: forall x. DeleteFraudster -> Rep DeleteFraudster x
Prelude.Generic)

-- |
-- Create a value of 'DeleteFraudster' 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:
--
-- 'domainId', 'deleteFraudster_domainId' - The identifier of the domain containing the fraudster.
--
-- 'fraudsterId', 'deleteFraudster_fraudsterId' - The identifier of the fraudster you want to delete.
newDeleteFraudster ::
  -- | 'domainId'
  Prelude.Text ->
  -- | 'fraudsterId'
  Prelude.Text ->
  DeleteFraudster
newDeleteFraudster :: Text -> Text -> DeleteFraudster
newDeleteFraudster Text
pDomainId_ Text
pFraudsterId_ =
  DeleteFraudster'
    { $sel:domainId:DeleteFraudster' :: Text
domainId = Text
pDomainId_,
      $sel:fraudsterId:DeleteFraudster' :: Sensitive Text
fraudsterId = forall a. Iso' (Sensitive a) a
Data._Sensitive forall t b. AReview t b -> b -> t
Lens.# Text
pFraudsterId_
    }

-- | The identifier of the domain containing the fraudster.
deleteFraudster_domainId :: Lens.Lens' DeleteFraudster Prelude.Text
deleteFraudster_domainId :: Lens' DeleteFraudster Text
deleteFraudster_domainId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFraudster' {Text
domainId :: Text
$sel:domainId:DeleteFraudster' :: DeleteFraudster -> Text
domainId} -> Text
domainId) (\s :: DeleteFraudster
s@DeleteFraudster' {} Text
a -> DeleteFraudster
s {$sel:domainId:DeleteFraudster' :: Text
domainId = Text
a} :: DeleteFraudster)

-- | The identifier of the fraudster you want to delete.
deleteFraudster_fraudsterId :: Lens.Lens' DeleteFraudster Prelude.Text
deleteFraudster_fraudsterId :: Lens' DeleteFraudster Text
deleteFraudster_fraudsterId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFraudster' {Sensitive Text
fraudsterId :: Sensitive Text
$sel:fraudsterId:DeleteFraudster' :: DeleteFraudster -> Sensitive Text
fraudsterId} -> Sensitive Text
fraudsterId) (\s :: DeleteFraudster
s@DeleteFraudster' {} Sensitive Text
a -> DeleteFraudster
s {$sel:fraudsterId:DeleteFraudster' :: Sensitive Text
fraudsterId = Sensitive Text
a} :: DeleteFraudster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. Iso' (Sensitive a) a
Data._Sensitive

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

instance Prelude.Hashable DeleteFraudster where
  hashWithSalt :: Int -> DeleteFraudster -> Int
hashWithSalt Int
_salt DeleteFraudster' {Text
Sensitive Text
fraudsterId :: Sensitive Text
domainId :: Text
$sel:fraudsterId:DeleteFraudster' :: DeleteFraudster -> Sensitive Text
$sel:domainId:DeleteFraudster' :: DeleteFraudster -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Sensitive Text
fraudsterId

instance Prelude.NFData DeleteFraudster where
  rnf :: DeleteFraudster -> ()
rnf DeleteFraudster' {Text
Sensitive Text
fraudsterId :: Sensitive Text
domainId :: Text
$sel:fraudsterId:DeleteFraudster' :: DeleteFraudster -> Sensitive Text
$sel:domainId:DeleteFraudster' :: DeleteFraudster -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
domainId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive Text
fraudsterId

instance Data.ToHeaders DeleteFraudster where
  toHeaders :: DeleteFraudster -> [Header]
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 -> [Header]
Data.=# (ByteString
"VoiceID.DeleteFraudster" :: Prelude.ByteString),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DeleteFraudster where
  toJSON :: DeleteFraudster -> Value
toJSON DeleteFraudster' {Text
Sensitive Text
fraudsterId :: Sensitive Text
domainId :: Text
$sel:fraudsterId:DeleteFraudster' :: DeleteFraudster -> Sensitive Text
$sel:domainId:DeleteFraudster' :: DeleteFraudster -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"DomainId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
domainId),
            forall a. a -> Maybe a
Prelude.Just (Key
"FraudsterId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Sensitive Text
fraudsterId)
          ]
      )

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

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

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

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

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