{-# 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.ELB.DeleteLoadBalancerListeners
-- 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 listeners from the specified load balancer.
module Amazonka.ELB.DeleteLoadBalancerListeners
  ( -- * Creating a Request
    DeleteLoadBalancerListeners (..),
    newDeleteLoadBalancerListeners,

    -- * Request Lenses
    deleteLoadBalancerListeners_loadBalancerName,
    deleteLoadBalancerListeners_loadBalancerPorts,

    -- * Destructuring the Response
    DeleteLoadBalancerListenersResponse (..),
    newDeleteLoadBalancerListenersResponse,

    -- * Response Lenses
    deleteLoadBalancerListenersResponse_httpStatus,
  )
where

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

-- | Contains the parameters for DeleteLoadBalancerListeners.
--
-- /See:/ 'newDeleteLoadBalancerListeners' smart constructor.
data DeleteLoadBalancerListeners = DeleteLoadBalancerListeners'
  { -- | The name of the load balancer.
    DeleteLoadBalancerListeners -> Text
loadBalancerName :: Prelude.Text,
    -- | The client port numbers of the listeners.
    DeleteLoadBalancerListeners -> [Int]
loadBalancerPorts :: [Prelude.Int]
  }
  deriving (DeleteLoadBalancerListeners -> DeleteLoadBalancerListeners -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteLoadBalancerListeners -> DeleteLoadBalancerListeners -> Bool
$c/= :: DeleteLoadBalancerListeners -> DeleteLoadBalancerListeners -> Bool
== :: DeleteLoadBalancerListeners -> DeleteLoadBalancerListeners -> Bool
$c== :: DeleteLoadBalancerListeners -> DeleteLoadBalancerListeners -> Bool
Prelude.Eq, ReadPrec [DeleteLoadBalancerListeners]
ReadPrec DeleteLoadBalancerListeners
Int -> ReadS DeleteLoadBalancerListeners
ReadS [DeleteLoadBalancerListeners]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteLoadBalancerListeners]
$creadListPrec :: ReadPrec [DeleteLoadBalancerListeners]
readPrec :: ReadPrec DeleteLoadBalancerListeners
$creadPrec :: ReadPrec DeleteLoadBalancerListeners
readList :: ReadS [DeleteLoadBalancerListeners]
$creadList :: ReadS [DeleteLoadBalancerListeners]
readsPrec :: Int -> ReadS DeleteLoadBalancerListeners
$creadsPrec :: Int -> ReadS DeleteLoadBalancerListeners
Prelude.Read, Int -> DeleteLoadBalancerListeners -> ShowS
[DeleteLoadBalancerListeners] -> ShowS
DeleteLoadBalancerListeners -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteLoadBalancerListeners] -> ShowS
$cshowList :: [DeleteLoadBalancerListeners] -> ShowS
show :: DeleteLoadBalancerListeners -> String
$cshow :: DeleteLoadBalancerListeners -> String
showsPrec :: Int -> DeleteLoadBalancerListeners -> ShowS
$cshowsPrec :: Int -> DeleteLoadBalancerListeners -> ShowS
Prelude.Show, forall x.
Rep DeleteLoadBalancerListeners x -> DeleteLoadBalancerListeners
forall x.
DeleteLoadBalancerListeners -> Rep DeleteLoadBalancerListeners x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteLoadBalancerListeners x -> DeleteLoadBalancerListeners
$cfrom :: forall x.
DeleteLoadBalancerListeners -> Rep DeleteLoadBalancerListeners x
Prelude.Generic)

-- |
-- Create a value of 'DeleteLoadBalancerListeners' 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:
--
-- 'loadBalancerName', 'deleteLoadBalancerListeners_loadBalancerName' - The name of the load balancer.
--
-- 'loadBalancerPorts', 'deleteLoadBalancerListeners_loadBalancerPorts' - The client port numbers of the listeners.
newDeleteLoadBalancerListeners ::
  -- | 'loadBalancerName'
  Prelude.Text ->
  DeleteLoadBalancerListeners
newDeleteLoadBalancerListeners :: Text -> DeleteLoadBalancerListeners
newDeleteLoadBalancerListeners Text
pLoadBalancerName_ =
  DeleteLoadBalancerListeners'
    { $sel:loadBalancerName:DeleteLoadBalancerListeners' :: Text
loadBalancerName =
        Text
pLoadBalancerName_,
      $sel:loadBalancerPorts:DeleteLoadBalancerListeners' :: [Int]
loadBalancerPorts = forall a. Monoid a => a
Prelude.mempty
    }

-- | The name of the load balancer.
deleteLoadBalancerListeners_loadBalancerName :: Lens.Lens' DeleteLoadBalancerListeners Prelude.Text
deleteLoadBalancerListeners_loadBalancerName :: Lens' DeleteLoadBalancerListeners Text
deleteLoadBalancerListeners_loadBalancerName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteLoadBalancerListeners' {Text
loadBalancerName :: Text
$sel:loadBalancerName:DeleteLoadBalancerListeners' :: DeleteLoadBalancerListeners -> Text
loadBalancerName} -> Text
loadBalancerName) (\s :: DeleteLoadBalancerListeners
s@DeleteLoadBalancerListeners' {} Text
a -> DeleteLoadBalancerListeners
s {$sel:loadBalancerName:DeleteLoadBalancerListeners' :: Text
loadBalancerName = Text
a} :: DeleteLoadBalancerListeners)

-- | The client port numbers of the listeners.
deleteLoadBalancerListeners_loadBalancerPorts :: Lens.Lens' DeleteLoadBalancerListeners [Prelude.Int]
deleteLoadBalancerListeners_loadBalancerPorts :: Lens' DeleteLoadBalancerListeners [Int]
deleteLoadBalancerListeners_loadBalancerPorts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteLoadBalancerListeners' {[Int]
loadBalancerPorts :: [Int]
$sel:loadBalancerPorts:DeleteLoadBalancerListeners' :: DeleteLoadBalancerListeners -> [Int]
loadBalancerPorts} -> [Int]
loadBalancerPorts) (\s :: DeleteLoadBalancerListeners
s@DeleteLoadBalancerListeners' {} [Int]
a -> DeleteLoadBalancerListeners
s {$sel:loadBalancerPorts:DeleteLoadBalancerListeners' :: [Int]
loadBalancerPorts = [Int]
a} :: DeleteLoadBalancerListeners) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.AWSRequest DeleteLoadBalancerListeners where
  type
    AWSResponse DeleteLoadBalancerListeners =
      DeleteLoadBalancerListenersResponse
  request :: (Service -> Service)
-> DeleteLoadBalancerListeners
-> Request DeleteLoadBalancerListeners
request Service -> Service
overrides =
    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 DeleteLoadBalancerListeners
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteLoadBalancerListeners)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DeleteLoadBalancerListenersResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Int -> DeleteLoadBalancerListenersResponse
DeleteLoadBalancerListenersResponse'
            forall (f :: * -> *) a b. Functor 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 DeleteLoadBalancerListeners where
  hashWithSalt :: Int -> DeleteLoadBalancerListeners -> Int
hashWithSalt Int
_salt DeleteLoadBalancerListeners' {[Int]
Text
loadBalancerPorts :: [Int]
loadBalancerName :: Text
$sel:loadBalancerPorts:DeleteLoadBalancerListeners' :: DeleteLoadBalancerListeners -> [Int]
$sel:loadBalancerName:DeleteLoadBalancerListeners' :: DeleteLoadBalancerListeners -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
loadBalancerName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Int]
loadBalancerPorts

instance Prelude.NFData DeleteLoadBalancerListeners where
  rnf :: DeleteLoadBalancerListeners -> ()
rnf DeleteLoadBalancerListeners' {[Int]
Text
loadBalancerPorts :: [Int]
loadBalancerName :: Text
$sel:loadBalancerPorts:DeleteLoadBalancerListeners' :: DeleteLoadBalancerListeners -> [Int]
$sel:loadBalancerName:DeleteLoadBalancerListeners' :: DeleteLoadBalancerListeners -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
loadBalancerName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Int]
loadBalancerPorts

instance Data.ToHeaders DeleteLoadBalancerListeners where
  toHeaders :: DeleteLoadBalancerListeners -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

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

instance Data.ToQuery DeleteLoadBalancerListeners where
  toQuery :: DeleteLoadBalancerListeners -> QueryString
toQuery DeleteLoadBalancerListeners' {[Int]
Text
loadBalancerPorts :: [Int]
loadBalancerName :: Text
$sel:loadBalancerPorts:DeleteLoadBalancerListeners' :: DeleteLoadBalancerListeners -> [Int]
$sel:loadBalancerName:DeleteLoadBalancerListeners' :: DeleteLoadBalancerListeners -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DeleteLoadBalancerListeners" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2012-06-01" :: Prelude.ByteString),
        ByteString
"LoadBalancerName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
loadBalancerName,
        ByteString
"LoadBalancerPorts"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" [Int]
loadBalancerPorts
      ]

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

-- |
-- Create a value of 'DeleteLoadBalancerListenersResponse' 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:
--
-- 'httpStatus', 'deleteLoadBalancerListenersResponse_httpStatus' - The response's http status code.
newDeleteLoadBalancerListenersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteLoadBalancerListenersResponse
newDeleteLoadBalancerListenersResponse :: Int -> DeleteLoadBalancerListenersResponse
newDeleteLoadBalancerListenersResponse Int
pHttpStatus_ =
  DeleteLoadBalancerListenersResponse'
    { $sel:httpStatus:DeleteLoadBalancerListenersResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    DeleteLoadBalancerListenersResponse
  where
  rnf :: DeleteLoadBalancerListenersResponse -> ()
rnf DeleteLoadBalancerListenersResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteLoadBalancerListenersResponse' :: DeleteLoadBalancerListenersResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus