{-# 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.SES.DeleteVerifiedEmailAddress
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deprecated. Use the @DeleteIdentity@ operation to delete email addresses
-- and domains.
module Amazonka.SES.DeleteVerifiedEmailAddress
  ( -- * Creating a Request
    DeleteVerifiedEmailAddress (..),
    newDeleteVerifiedEmailAddress,

    -- * Request Lenses
    deleteVerifiedEmailAddress_emailAddress,

    -- * Destructuring the Response
    DeleteVerifiedEmailAddressResponse (..),
    newDeleteVerifiedEmailAddressResponse,
  )
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.SES.Types

-- | Represents a request to delete an email address from the list of email
-- addresses you have attempted to verify under your AWS account.
--
-- /See:/ 'newDeleteVerifiedEmailAddress' smart constructor.
data DeleteVerifiedEmailAddress = DeleteVerifiedEmailAddress'
  { -- | An email address to be removed from the list of verified addresses.
    DeleteVerifiedEmailAddress -> Text
emailAddress :: Prelude.Text
  }
  deriving (DeleteVerifiedEmailAddress -> DeleteVerifiedEmailAddress -> Bool
(DeleteVerifiedEmailAddress -> DeleteVerifiedEmailAddress -> Bool)
-> (DeleteVerifiedEmailAddress
    -> DeleteVerifiedEmailAddress -> Bool)
-> Eq DeleteVerifiedEmailAddress
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DeleteVerifiedEmailAddress -> DeleteVerifiedEmailAddress -> Bool
== :: DeleteVerifiedEmailAddress -> DeleteVerifiedEmailAddress -> Bool
$c/= :: DeleteVerifiedEmailAddress -> DeleteVerifiedEmailAddress -> Bool
/= :: DeleteVerifiedEmailAddress -> DeleteVerifiedEmailAddress -> Bool
Prelude.Eq, ReadPrec [DeleteVerifiedEmailAddress]
ReadPrec DeleteVerifiedEmailAddress
Int -> ReadS DeleteVerifiedEmailAddress
ReadS [DeleteVerifiedEmailAddress]
(Int -> ReadS DeleteVerifiedEmailAddress)
-> ReadS [DeleteVerifiedEmailAddress]
-> ReadPrec DeleteVerifiedEmailAddress
-> ReadPrec [DeleteVerifiedEmailAddress]
-> Read DeleteVerifiedEmailAddress
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS DeleteVerifiedEmailAddress
readsPrec :: Int -> ReadS DeleteVerifiedEmailAddress
$creadList :: ReadS [DeleteVerifiedEmailAddress]
readList :: ReadS [DeleteVerifiedEmailAddress]
$creadPrec :: ReadPrec DeleteVerifiedEmailAddress
readPrec :: ReadPrec DeleteVerifiedEmailAddress
$creadListPrec :: ReadPrec [DeleteVerifiedEmailAddress]
readListPrec :: ReadPrec [DeleteVerifiedEmailAddress]
Prelude.Read, Int -> DeleteVerifiedEmailAddress -> ShowS
[DeleteVerifiedEmailAddress] -> ShowS
DeleteVerifiedEmailAddress -> String
(Int -> DeleteVerifiedEmailAddress -> ShowS)
-> (DeleteVerifiedEmailAddress -> String)
-> ([DeleteVerifiedEmailAddress] -> ShowS)
-> Show DeleteVerifiedEmailAddress
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DeleteVerifiedEmailAddress -> ShowS
showsPrec :: Int -> DeleteVerifiedEmailAddress -> ShowS
$cshow :: DeleteVerifiedEmailAddress -> String
show :: DeleteVerifiedEmailAddress -> String
$cshowList :: [DeleteVerifiedEmailAddress] -> ShowS
showList :: [DeleteVerifiedEmailAddress] -> ShowS
Prelude.Show, (forall x.
 DeleteVerifiedEmailAddress -> Rep DeleteVerifiedEmailAddress x)
-> (forall x.
    Rep DeleteVerifiedEmailAddress x -> DeleteVerifiedEmailAddress)
-> Generic DeleteVerifiedEmailAddress
forall x.
Rep DeleteVerifiedEmailAddress x -> DeleteVerifiedEmailAddress
forall x.
DeleteVerifiedEmailAddress -> Rep DeleteVerifiedEmailAddress x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
DeleteVerifiedEmailAddress -> Rep DeleteVerifiedEmailAddress x
from :: forall x.
DeleteVerifiedEmailAddress -> Rep DeleteVerifiedEmailAddress x
$cto :: forall x.
Rep DeleteVerifiedEmailAddress x -> DeleteVerifiedEmailAddress
to :: forall x.
Rep DeleteVerifiedEmailAddress x -> DeleteVerifiedEmailAddress
Prelude.Generic)

-- |
-- Create a value of 'DeleteVerifiedEmailAddress' 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:
--
-- 'emailAddress', 'deleteVerifiedEmailAddress_emailAddress' - An email address to be removed from the list of verified addresses.
newDeleteVerifiedEmailAddress ::
  -- | 'emailAddress'
  Prelude.Text ->
  DeleteVerifiedEmailAddress
newDeleteVerifiedEmailAddress :: Text -> DeleteVerifiedEmailAddress
newDeleteVerifiedEmailAddress Text
pEmailAddress_ =
  DeleteVerifiedEmailAddress'
    { $sel:emailAddress:DeleteVerifiedEmailAddress' :: Text
emailAddress =
        Text
pEmailAddress_
    }

-- | An email address to be removed from the list of verified addresses.
deleteVerifiedEmailAddress_emailAddress :: Lens.Lens' DeleteVerifiedEmailAddress Prelude.Text
deleteVerifiedEmailAddress_emailAddress :: Lens' DeleteVerifiedEmailAddress Text
deleteVerifiedEmailAddress_emailAddress = (DeleteVerifiedEmailAddress -> Text)
-> (DeleteVerifiedEmailAddress
    -> Text -> DeleteVerifiedEmailAddress)
-> Lens' DeleteVerifiedEmailAddress Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteVerifiedEmailAddress' {Text
$sel:emailAddress:DeleteVerifiedEmailAddress' :: DeleteVerifiedEmailAddress -> Text
emailAddress :: Text
emailAddress} -> Text
emailAddress) (\s :: DeleteVerifiedEmailAddress
s@DeleteVerifiedEmailAddress' {} Text
a -> DeleteVerifiedEmailAddress
s {emailAddress = a} :: DeleteVerifiedEmailAddress)

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

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

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

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

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

instance Data.ToQuery DeleteVerifiedEmailAddress where
  toQuery :: DeleteVerifiedEmailAddress -> QueryString
toQuery DeleteVerifiedEmailAddress' {Text
$sel:emailAddress:DeleteVerifiedEmailAddress' :: DeleteVerifiedEmailAddress -> Text
emailAddress :: Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DeleteVerifiedEmailAddress" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-12-01" :: Prelude.ByteString),
        ByteString
"EmailAddress" ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
emailAddress
      ]

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

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

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