{-# 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.NetworkManager.DeletePeering
-- 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 an existing peering connection.
module Amazonka.NetworkManager.DeletePeering
  ( -- * Creating a Request
    DeletePeering (..),
    newDeletePeering,

    -- * Request Lenses
    deletePeering_peeringId,

    -- * Destructuring the Response
    DeletePeeringResponse (..),
    newDeletePeeringResponse,

    -- * Response Lenses
    deletePeeringResponse_peering,
    deletePeeringResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'DeletePeering' 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:
--
-- 'peeringId', 'deletePeering_peeringId' - The ID of the peering connection to delete.
newDeletePeering ::
  -- | 'peeringId'
  Prelude.Text ->
  DeletePeering
newDeletePeering :: Text -> DeletePeering
newDeletePeering Text
pPeeringId_ =
  DeletePeering' {$sel:peeringId:DeletePeering' :: Text
peeringId = Text
pPeeringId_}

-- | The ID of the peering connection to delete.
deletePeering_peeringId :: Lens.Lens' DeletePeering Prelude.Text
deletePeering_peeringId :: Lens' DeletePeering Text
deletePeering_peeringId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePeering' {Text
peeringId :: Text
$sel:peeringId:DeletePeering' :: DeletePeering -> Text
peeringId} -> Text
peeringId) (\s :: DeletePeering
s@DeletePeering' {} Text
a -> DeletePeering
s {$sel:peeringId:DeletePeering' :: Text
peeringId = Text
a} :: DeletePeering)

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

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

instance Data.ToHeaders DeletePeering where
  toHeaders :: DeletePeering -> 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 DeletePeering where
  toPath :: DeletePeering -> ByteString
toPath DeletePeering' {Text
peeringId :: Text
$sel:peeringId:DeletePeering' :: DeletePeering -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"/peerings/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
peeringId]

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

-- | /See:/ 'newDeletePeeringResponse' smart constructor.
data DeletePeeringResponse = DeletePeeringResponse'
  { -- | Information about a deleted peering connection.
    DeletePeeringResponse -> Maybe Peering
peering :: Prelude.Maybe Peering,
    -- | The response's http status code.
    DeletePeeringResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeletePeeringResponse -> DeletePeeringResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeletePeeringResponse -> DeletePeeringResponse -> Bool
$c/= :: DeletePeeringResponse -> DeletePeeringResponse -> Bool
== :: DeletePeeringResponse -> DeletePeeringResponse -> Bool
$c== :: DeletePeeringResponse -> DeletePeeringResponse -> Bool
Prelude.Eq, ReadPrec [DeletePeeringResponse]
ReadPrec DeletePeeringResponse
Int -> ReadS DeletePeeringResponse
ReadS [DeletePeeringResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeletePeeringResponse]
$creadListPrec :: ReadPrec [DeletePeeringResponse]
readPrec :: ReadPrec DeletePeeringResponse
$creadPrec :: ReadPrec DeletePeeringResponse
readList :: ReadS [DeletePeeringResponse]
$creadList :: ReadS [DeletePeeringResponse]
readsPrec :: Int -> ReadS DeletePeeringResponse
$creadsPrec :: Int -> ReadS DeletePeeringResponse
Prelude.Read, Int -> DeletePeeringResponse -> ShowS
[DeletePeeringResponse] -> ShowS
DeletePeeringResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeletePeeringResponse] -> ShowS
$cshowList :: [DeletePeeringResponse] -> ShowS
show :: DeletePeeringResponse -> String
$cshow :: DeletePeeringResponse -> String
showsPrec :: Int -> DeletePeeringResponse -> ShowS
$cshowsPrec :: Int -> DeletePeeringResponse -> ShowS
Prelude.Show, forall x. Rep DeletePeeringResponse x -> DeletePeeringResponse
forall x. DeletePeeringResponse -> Rep DeletePeeringResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeletePeeringResponse x -> DeletePeeringResponse
$cfrom :: forall x. DeletePeeringResponse -> Rep DeletePeeringResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeletePeeringResponse' 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:
--
-- 'peering', 'deletePeeringResponse_peering' - Information about a deleted peering connection.
--
-- 'httpStatus', 'deletePeeringResponse_httpStatus' - The response's http status code.
newDeletePeeringResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeletePeeringResponse
newDeletePeeringResponse :: Int -> DeletePeeringResponse
newDeletePeeringResponse Int
pHttpStatus_ =
  DeletePeeringResponse'
    { $sel:peering:DeletePeeringResponse' :: Maybe Peering
peering = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeletePeeringResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about a deleted peering connection.
deletePeeringResponse_peering :: Lens.Lens' DeletePeeringResponse (Prelude.Maybe Peering)
deletePeeringResponse_peering :: Lens' DeletePeeringResponse (Maybe Peering)
deletePeeringResponse_peering = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePeeringResponse' {Maybe Peering
peering :: Maybe Peering
$sel:peering:DeletePeeringResponse' :: DeletePeeringResponse -> Maybe Peering
peering} -> Maybe Peering
peering) (\s :: DeletePeeringResponse
s@DeletePeeringResponse' {} Maybe Peering
a -> DeletePeeringResponse
s {$sel:peering:DeletePeeringResponse' :: Maybe Peering
peering = Maybe Peering
a} :: DeletePeeringResponse)

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

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