{-# 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.MQ.DeleteBroker
-- 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 broker. Note: This API is asynchronous.
module Amazonka.MQ.DeleteBroker
  ( -- * Creating a Request
    DeleteBroker (..),
    newDeleteBroker,

    -- * Request Lenses
    deleteBroker_brokerId,

    -- * Destructuring the Response
    DeleteBrokerResponse (..),
    newDeleteBrokerResponse,

    -- * Response Lenses
    deleteBrokerResponse_brokerId,
    deleteBrokerResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MQ.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDeleteBroker' smart constructor.
data DeleteBroker = DeleteBroker'
  { -- | The unique ID that Amazon MQ generates for the broker.
    DeleteBroker -> Text
brokerId :: Prelude.Text
  }
  deriving (DeleteBroker -> DeleteBroker -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteBroker -> DeleteBroker -> Bool
$c/= :: DeleteBroker -> DeleteBroker -> Bool
== :: DeleteBroker -> DeleteBroker -> Bool
$c== :: DeleteBroker -> DeleteBroker -> Bool
Prelude.Eq, ReadPrec [DeleteBroker]
ReadPrec DeleteBroker
Int -> ReadS DeleteBroker
ReadS [DeleteBroker]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteBroker]
$creadListPrec :: ReadPrec [DeleteBroker]
readPrec :: ReadPrec DeleteBroker
$creadPrec :: ReadPrec DeleteBroker
readList :: ReadS [DeleteBroker]
$creadList :: ReadS [DeleteBroker]
readsPrec :: Int -> ReadS DeleteBroker
$creadsPrec :: Int -> ReadS DeleteBroker
Prelude.Read, Int -> DeleteBroker -> ShowS
[DeleteBroker] -> ShowS
DeleteBroker -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteBroker] -> ShowS
$cshowList :: [DeleteBroker] -> ShowS
show :: DeleteBroker -> String
$cshow :: DeleteBroker -> String
showsPrec :: Int -> DeleteBroker -> ShowS
$cshowsPrec :: Int -> DeleteBroker -> ShowS
Prelude.Show, forall x. Rep DeleteBroker x -> DeleteBroker
forall x. DeleteBroker -> Rep DeleteBroker x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteBroker x -> DeleteBroker
$cfrom :: forall x. DeleteBroker -> Rep DeleteBroker x
Prelude.Generic)

-- |
-- Create a value of 'DeleteBroker' 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:
--
-- 'brokerId', 'deleteBroker_brokerId' - The unique ID that Amazon MQ generates for the broker.
newDeleteBroker ::
  -- | 'brokerId'
  Prelude.Text ->
  DeleteBroker
newDeleteBroker :: Text -> DeleteBroker
newDeleteBroker Text
pBrokerId_ =
  DeleteBroker' {$sel:brokerId:DeleteBroker' :: Text
brokerId = Text
pBrokerId_}

-- | The unique ID that Amazon MQ generates for the broker.
deleteBroker_brokerId :: Lens.Lens' DeleteBroker Prelude.Text
deleteBroker_brokerId :: Lens' DeleteBroker Text
deleteBroker_brokerId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteBroker' {Text
brokerId :: Text
$sel:brokerId:DeleteBroker' :: DeleteBroker -> Text
brokerId} -> Text
brokerId) (\s :: DeleteBroker
s@DeleteBroker' {} Text
a -> DeleteBroker
s {$sel:brokerId:DeleteBroker' :: Text
brokerId = Text
a} :: DeleteBroker)

instance Core.AWSRequest DeleteBroker where
  type AWSResponse DeleteBroker = DeleteBrokerResponse
  request :: (Service -> Service) -> DeleteBroker -> Request DeleteBroker
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 DeleteBroker
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteBroker)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Int -> DeleteBrokerResponse
DeleteBrokerResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"brokerId")
            forall (f :: * -> *) a b. Applicative f => 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 DeleteBroker where
  hashWithSalt :: Int -> DeleteBroker -> Int
hashWithSalt Int
_salt DeleteBroker' {Text
brokerId :: Text
$sel:brokerId:DeleteBroker' :: DeleteBroker -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
brokerId

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

instance Data.ToHeaders DeleteBroker where
  toHeaders :: DeleteBroker -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeleteBroker where
  toPath :: DeleteBroker -> ByteString
toPath DeleteBroker' {Text
brokerId :: Text
$sel:brokerId:DeleteBroker' :: DeleteBroker -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/v1/brokers/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
brokerId]

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

-- | /See:/ 'newDeleteBrokerResponse' smart constructor.
data DeleteBrokerResponse = DeleteBrokerResponse'
  { -- | The unique ID that Amazon MQ generates for the broker.
    DeleteBrokerResponse -> Maybe Text
brokerId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DeleteBrokerResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteBrokerResponse -> DeleteBrokerResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteBrokerResponse -> DeleteBrokerResponse -> Bool
$c/= :: DeleteBrokerResponse -> DeleteBrokerResponse -> Bool
== :: DeleteBrokerResponse -> DeleteBrokerResponse -> Bool
$c== :: DeleteBrokerResponse -> DeleteBrokerResponse -> Bool
Prelude.Eq, ReadPrec [DeleteBrokerResponse]
ReadPrec DeleteBrokerResponse
Int -> ReadS DeleteBrokerResponse
ReadS [DeleteBrokerResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteBrokerResponse]
$creadListPrec :: ReadPrec [DeleteBrokerResponse]
readPrec :: ReadPrec DeleteBrokerResponse
$creadPrec :: ReadPrec DeleteBrokerResponse
readList :: ReadS [DeleteBrokerResponse]
$creadList :: ReadS [DeleteBrokerResponse]
readsPrec :: Int -> ReadS DeleteBrokerResponse
$creadsPrec :: Int -> ReadS DeleteBrokerResponse
Prelude.Read, Int -> DeleteBrokerResponse -> ShowS
[DeleteBrokerResponse] -> ShowS
DeleteBrokerResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteBrokerResponse] -> ShowS
$cshowList :: [DeleteBrokerResponse] -> ShowS
show :: DeleteBrokerResponse -> String
$cshow :: DeleteBrokerResponse -> String
showsPrec :: Int -> DeleteBrokerResponse -> ShowS
$cshowsPrec :: Int -> DeleteBrokerResponse -> ShowS
Prelude.Show, forall x. Rep DeleteBrokerResponse x -> DeleteBrokerResponse
forall x. DeleteBrokerResponse -> Rep DeleteBrokerResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteBrokerResponse x -> DeleteBrokerResponse
$cfrom :: forall x. DeleteBrokerResponse -> Rep DeleteBrokerResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteBrokerResponse' 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:
--
-- 'brokerId', 'deleteBrokerResponse_brokerId' - The unique ID that Amazon MQ generates for the broker.
--
-- 'httpStatus', 'deleteBrokerResponse_httpStatus' - The response's http status code.
newDeleteBrokerResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteBrokerResponse
newDeleteBrokerResponse :: Int -> DeleteBrokerResponse
newDeleteBrokerResponse Int
pHttpStatus_ =
  DeleteBrokerResponse'
    { $sel:brokerId:DeleteBrokerResponse' :: Maybe Text
brokerId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteBrokerResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The unique ID that Amazon MQ generates for the broker.
deleteBrokerResponse_brokerId :: Lens.Lens' DeleteBrokerResponse (Prelude.Maybe Prelude.Text)
deleteBrokerResponse_brokerId :: Lens' DeleteBrokerResponse (Maybe Text)
deleteBrokerResponse_brokerId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteBrokerResponse' {Maybe Text
brokerId :: Maybe Text
$sel:brokerId:DeleteBrokerResponse' :: DeleteBrokerResponse -> Maybe Text
brokerId} -> Maybe Text
brokerId) (\s :: DeleteBrokerResponse
s@DeleteBrokerResponse' {} Maybe Text
a -> DeleteBrokerResponse
s {$sel:brokerId:DeleteBrokerResponse' :: Maybe Text
brokerId = Maybe Text
a} :: DeleteBrokerResponse)

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

instance Prelude.NFData DeleteBrokerResponse where
  rnf :: DeleteBrokerResponse -> ()
rnf DeleteBrokerResponse' {Int
Maybe Text
httpStatus :: Int
brokerId :: Maybe Text
$sel:httpStatus:DeleteBrokerResponse' :: DeleteBrokerResponse -> Int
$sel:brokerId:DeleteBrokerResponse' :: DeleteBrokerResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
brokerId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus