{-# 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.DirectConnect.DeleteDirectConnectGatewayAssociationProposal
-- 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 association proposal request between the specified Direct
-- Connect gateway and virtual private gateway or transit gateway.
module Amazonka.DirectConnect.DeleteDirectConnectGatewayAssociationProposal
  ( -- * Creating a Request
    DeleteDirectConnectGatewayAssociationProposal (..),
    newDeleteDirectConnectGatewayAssociationProposal,

    -- * Request Lenses
    deleteDirectConnectGatewayAssociationProposal_proposalId,

    -- * Destructuring the Response
    DeleteDirectConnectGatewayAssociationProposalResponse (..),
    newDeleteDirectConnectGatewayAssociationProposalResponse,

    -- * Response Lenses
    deleteDirectConnectGatewayAssociationProposalResponse_directConnectGatewayAssociationProposal,
    deleteDirectConnectGatewayAssociationProposalResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'DeleteDirectConnectGatewayAssociationProposal' 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:
--
-- 'proposalId', 'deleteDirectConnectGatewayAssociationProposal_proposalId' - The ID of the proposal.
newDeleteDirectConnectGatewayAssociationProposal ::
  -- | 'proposalId'
  Prelude.Text ->
  DeleteDirectConnectGatewayAssociationProposal
newDeleteDirectConnectGatewayAssociationProposal :: Text -> DeleteDirectConnectGatewayAssociationProposal
newDeleteDirectConnectGatewayAssociationProposal
  Text
pProposalId_ =
    DeleteDirectConnectGatewayAssociationProposal'
      { $sel:proposalId:DeleteDirectConnectGatewayAssociationProposal' :: Text
proposalId =
          Text
pProposalId_
      }

-- | The ID of the proposal.
deleteDirectConnectGatewayAssociationProposal_proposalId :: Lens.Lens' DeleteDirectConnectGatewayAssociationProposal Prelude.Text
deleteDirectConnectGatewayAssociationProposal_proposalId :: Lens' DeleteDirectConnectGatewayAssociationProposal Text
deleteDirectConnectGatewayAssociationProposal_proposalId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDirectConnectGatewayAssociationProposal' {Text
proposalId :: Text
$sel:proposalId:DeleteDirectConnectGatewayAssociationProposal' :: DeleteDirectConnectGatewayAssociationProposal -> Text
proposalId} -> Text
proposalId) (\s :: DeleteDirectConnectGatewayAssociationProposal
s@DeleteDirectConnectGatewayAssociationProposal' {} Text
a -> DeleteDirectConnectGatewayAssociationProposal
s {$sel:proposalId:DeleteDirectConnectGatewayAssociationProposal' :: Text
proposalId = Text
a} :: DeleteDirectConnectGatewayAssociationProposal)

instance
  Core.AWSRequest
    DeleteDirectConnectGatewayAssociationProposal
  where
  type
    AWSResponse
      DeleteDirectConnectGatewayAssociationProposal =
      DeleteDirectConnectGatewayAssociationProposalResponse
  request :: (Service -> Service)
-> DeleteDirectConnectGatewayAssociationProposal
-> Request DeleteDirectConnectGatewayAssociationProposal
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 DeleteDirectConnectGatewayAssociationProposal
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse DeleteDirectConnectGatewayAssociationProposal)))
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 DirectConnectGatewayAssociationProposal
-> Int -> DeleteDirectConnectGatewayAssociationProposalResponse
DeleteDirectConnectGatewayAssociationProposalResponse'
            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
"directConnectGatewayAssociationProposal"
                        )
            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
    DeleteDirectConnectGatewayAssociationProposal
  where
  hashWithSalt :: Int -> DeleteDirectConnectGatewayAssociationProposal -> Int
hashWithSalt
    Int
_salt
    DeleteDirectConnectGatewayAssociationProposal' {Text
proposalId :: Text
$sel:proposalId:DeleteDirectConnectGatewayAssociationProposal' :: DeleteDirectConnectGatewayAssociationProposal -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
proposalId

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

instance
  Data.ToHeaders
    DeleteDirectConnectGatewayAssociationProposal
  where
  toHeaders :: DeleteDirectConnectGatewayAssociationProposal -> ResponseHeaders
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 -> ResponseHeaders
Data.=# ( ByteString
"OvertureService.DeleteDirectConnectGatewayAssociationProposal" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

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

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

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

-- | /See:/ 'newDeleteDirectConnectGatewayAssociationProposalResponse' smart constructor.
data DeleteDirectConnectGatewayAssociationProposalResponse = DeleteDirectConnectGatewayAssociationProposalResponse'
  { -- | The ID of the associated gateway.
    DeleteDirectConnectGatewayAssociationProposalResponse
-> Maybe DirectConnectGatewayAssociationProposal
directConnectGatewayAssociationProposal :: Prelude.Maybe DirectConnectGatewayAssociationProposal,
    -- | The response's http status code.
    DeleteDirectConnectGatewayAssociationProposalResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteDirectConnectGatewayAssociationProposalResponse
-> DeleteDirectConnectGatewayAssociationProposalResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteDirectConnectGatewayAssociationProposalResponse
-> DeleteDirectConnectGatewayAssociationProposalResponse -> Bool
$c/= :: DeleteDirectConnectGatewayAssociationProposalResponse
-> DeleteDirectConnectGatewayAssociationProposalResponse -> Bool
== :: DeleteDirectConnectGatewayAssociationProposalResponse
-> DeleteDirectConnectGatewayAssociationProposalResponse -> Bool
$c== :: DeleteDirectConnectGatewayAssociationProposalResponse
-> DeleteDirectConnectGatewayAssociationProposalResponse -> Bool
Prelude.Eq, ReadPrec [DeleteDirectConnectGatewayAssociationProposalResponse]
ReadPrec DeleteDirectConnectGatewayAssociationProposalResponse
Int -> ReadS DeleteDirectConnectGatewayAssociationProposalResponse
ReadS [DeleteDirectConnectGatewayAssociationProposalResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteDirectConnectGatewayAssociationProposalResponse]
$creadListPrec :: ReadPrec [DeleteDirectConnectGatewayAssociationProposalResponse]
readPrec :: ReadPrec DeleteDirectConnectGatewayAssociationProposalResponse
$creadPrec :: ReadPrec DeleteDirectConnectGatewayAssociationProposalResponse
readList :: ReadS [DeleteDirectConnectGatewayAssociationProposalResponse]
$creadList :: ReadS [DeleteDirectConnectGatewayAssociationProposalResponse]
readsPrec :: Int -> ReadS DeleteDirectConnectGatewayAssociationProposalResponse
$creadsPrec :: Int -> ReadS DeleteDirectConnectGatewayAssociationProposalResponse
Prelude.Read, Int
-> DeleteDirectConnectGatewayAssociationProposalResponse -> ShowS
[DeleteDirectConnectGatewayAssociationProposalResponse] -> ShowS
DeleteDirectConnectGatewayAssociationProposalResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteDirectConnectGatewayAssociationProposalResponse] -> ShowS
$cshowList :: [DeleteDirectConnectGatewayAssociationProposalResponse] -> ShowS
show :: DeleteDirectConnectGatewayAssociationProposalResponse -> String
$cshow :: DeleteDirectConnectGatewayAssociationProposalResponse -> String
showsPrec :: Int
-> DeleteDirectConnectGatewayAssociationProposalResponse -> ShowS
$cshowsPrec :: Int
-> DeleteDirectConnectGatewayAssociationProposalResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteDirectConnectGatewayAssociationProposalResponse x
-> DeleteDirectConnectGatewayAssociationProposalResponse
forall x.
DeleteDirectConnectGatewayAssociationProposalResponse
-> Rep DeleteDirectConnectGatewayAssociationProposalResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteDirectConnectGatewayAssociationProposalResponse x
-> DeleteDirectConnectGatewayAssociationProposalResponse
$cfrom :: forall x.
DeleteDirectConnectGatewayAssociationProposalResponse
-> Rep DeleteDirectConnectGatewayAssociationProposalResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteDirectConnectGatewayAssociationProposalResponse' 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:
--
-- 'directConnectGatewayAssociationProposal', 'deleteDirectConnectGatewayAssociationProposalResponse_directConnectGatewayAssociationProposal' - The ID of the associated gateway.
--
-- 'httpStatus', 'deleteDirectConnectGatewayAssociationProposalResponse_httpStatus' - The response's http status code.
newDeleteDirectConnectGatewayAssociationProposalResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteDirectConnectGatewayAssociationProposalResponse
newDeleteDirectConnectGatewayAssociationProposalResponse :: Int -> DeleteDirectConnectGatewayAssociationProposalResponse
newDeleteDirectConnectGatewayAssociationProposalResponse
  Int
pHttpStatus_ =
    DeleteDirectConnectGatewayAssociationProposalResponse'
      { $sel:directConnectGatewayAssociationProposal:DeleteDirectConnectGatewayAssociationProposalResponse' :: Maybe DirectConnectGatewayAssociationProposal
directConnectGatewayAssociationProposal =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DeleteDirectConnectGatewayAssociationProposalResponse' :: Int
httpStatus =
          Int
pHttpStatus_
      }

-- | The ID of the associated gateway.
deleteDirectConnectGatewayAssociationProposalResponse_directConnectGatewayAssociationProposal :: Lens.Lens' DeleteDirectConnectGatewayAssociationProposalResponse (Prelude.Maybe DirectConnectGatewayAssociationProposal)
deleteDirectConnectGatewayAssociationProposalResponse_directConnectGatewayAssociationProposal :: Lens'
  DeleteDirectConnectGatewayAssociationProposalResponse
  (Maybe DirectConnectGatewayAssociationProposal)
deleteDirectConnectGatewayAssociationProposalResponse_directConnectGatewayAssociationProposal = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDirectConnectGatewayAssociationProposalResponse' {Maybe DirectConnectGatewayAssociationProposal
directConnectGatewayAssociationProposal :: Maybe DirectConnectGatewayAssociationProposal
$sel:directConnectGatewayAssociationProposal:DeleteDirectConnectGatewayAssociationProposalResponse' :: DeleteDirectConnectGatewayAssociationProposalResponse
-> Maybe DirectConnectGatewayAssociationProposal
directConnectGatewayAssociationProposal} -> Maybe DirectConnectGatewayAssociationProposal
directConnectGatewayAssociationProposal) (\s :: DeleteDirectConnectGatewayAssociationProposalResponse
s@DeleteDirectConnectGatewayAssociationProposalResponse' {} Maybe DirectConnectGatewayAssociationProposal
a -> DeleteDirectConnectGatewayAssociationProposalResponse
s {$sel:directConnectGatewayAssociationProposal:DeleteDirectConnectGatewayAssociationProposalResponse' :: Maybe DirectConnectGatewayAssociationProposal
directConnectGatewayAssociationProposal = Maybe DirectConnectGatewayAssociationProposal
a} :: DeleteDirectConnectGatewayAssociationProposalResponse)

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

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