{-# 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.DescribeLoadBalancerAttributes
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the attributes for the specified load balancer.
module Amazonka.ELB.DescribeLoadBalancerAttributes
  ( -- * Creating a Request
    DescribeLoadBalancerAttributes (..),
    newDescribeLoadBalancerAttributes,

    -- * Request Lenses
    describeLoadBalancerAttributes_loadBalancerName,

    -- * Destructuring the Response
    DescribeLoadBalancerAttributesResponse (..),
    newDescribeLoadBalancerAttributesResponse,

    -- * Response Lenses
    describeLoadBalancerAttributesResponse_loadBalancerAttributes,
    describeLoadBalancerAttributesResponse_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 DescribeLoadBalancerAttributes.
--
-- /See:/ 'newDescribeLoadBalancerAttributes' smart constructor.
data DescribeLoadBalancerAttributes = DescribeLoadBalancerAttributes'
  { -- | The name of the load balancer.
    DescribeLoadBalancerAttributes -> Text
loadBalancerName :: Prelude.Text
  }
  deriving (DescribeLoadBalancerAttributes
-> DescribeLoadBalancerAttributes -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeLoadBalancerAttributes
-> DescribeLoadBalancerAttributes -> Bool
$c/= :: DescribeLoadBalancerAttributes
-> DescribeLoadBalancerAttributes -> Bool
== :: DescribeLoadBalancerAttributes
-> DescribeLoadBalancerAttributes -> Bool
$c== :: DescribeLoadBalancerAttributes
-> DescribeLoadBalancerAttributes -> Bool
Prelude.Eq, ReadPrec [DescribeLoadBalancerAttributes]
ReadPrec DescribeLoadBalancerAttributes
Int -> ReadS DescribeLoadBalancerAttributes
ReadS [DescribeLoadBalancerAttributes]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeLoadBalancerAttributes]
$creadListPrec :: ReadPrec [DescribeLoadBalancerAttributes]
readPrec :: ReadPrec DescribeLoadBalancerAttributes
$creadPrec :: ReadPrec DescribeLoadBalancerAttributes
readList :: ReadS [DescribeLoadBalancerAttributes]
$creadList :: ReadS [DescribeLoadBalancerAttributes]
readsPrec :: Int -> ReadS DescribeLoadBalancerAttributes
$creadsPrec :: Int -> ReadS DescribeLoadBalancerAttributes
Prelude.Read, Int -> DescribeLoadBalancerAttributes -> ShowS
[DescribeLoadBalancerAttributes] -> ShowS
DescribeLoadBalancerAttributes -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeLoadBalancerAttributes] -> ShowS
$cshowList :: [DescribeLoadBalancerAttributes] -> ShowS
show :: DescribeLoadBalancerAttributes -> String
$cshow :: DescribeLoadBalancerAttributes -> String
showsPrec :: Int -> DescribeLoadBalancerAttributes -> ShowS
$cshowsPrec :: Int -> DescribeLoadBalancerAttributes -> ShowS
Prelude.Show, forall x.
Rep DescribeLoadBalancerAttributes x
-> DescribeLoadBalancerAttributes
forall x.
DescribeLoadBalancerAttributes
-> Rep DescribeLoadBalancerAttributes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeLoadBalancerAttributes x
-> DescribeLoadBalancerAttributes
$cfrom :: forall x.
DescribeLoadBalancerAttributes
-> Rep DescribeLoadBalancerAttributes x
Prelude.Generic)

-- |
-- Create a value of 'DescribeLoadBalancerAttributes' 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', 'describeLoadBalancerAttributes_loadBalancerName' - The name of the load balancer.
newDescribeLoadBalancerAttributes ::
  -- | 'loadBalancerName'
  Prelude.Text ->
  DescribeLoadBalancerAttributes
newDescribeLoadBalancerAttributes :: Text -> DescribeLoadBalancerAttributes
newDescribeLoadBalancerAttributes Text
pLoadBalancerName_ =
  DescribeLoadBalancerAttributes'
    { $sel:loadBalancerName:DescribeLoadBalancerAttributes' :: Text
loadBalancerName =
        Text
pLoadBalancerName_
    }

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

instance
  Core.AWSRequest
    DescribeLoadBalancerAttributes
  where
  type
    AWSResponse DescribeLoadBalancerAttributes =
      DescribeLoadBalancerAttributesResponse
  request :: (Service -> Service)
-> DescribeLoadBalancerAttributes
-> Request DescribeLoadBalancerAttributes
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 DescribeLoadBalancerAttributes
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeLoadBalancerAttributes)))
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
"DescribeLoadBalancerAttributesResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe LoadBalancerAttributes
-> Int -> DescribeLoadBalancerAttributesResponse
DescribeLoadBalancerAttributesResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"LoadBalancerAttributes")
            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
    DescribeLoadBalancerAttributes
  where
  hashWithSalt :: Int -> DescribeLoadBalancerAttributes -> Int
hashWithSalt
    Int
_salt
    DescribeLoadBalancerAttributes' {Text
loadBalancerName :: Text
$sel:loadBalancerName:DescribeLoadBalancerAttributes' :: DescribeLoadBalancerAttributes -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
loadBalancerName

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

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

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

instance Data.ToQuery DescribeLoadBalancerAttributes where
  toQuery :: DescribeLoadBalancerAttributes -> QueryString
toQuery DescribeLoadBalancerAttributes' {Text
loadBalancerName :: Text
$sel:loadBalancerName:DescribeLoadBalancerAttributes' :: DescribeLoadBalancerAttributes -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeLoadBalancerAttributes" ::
                      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
      ]

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

-- |
-- Create a value of 'DescribeLoadBalancerAttributesResponse' 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:
--
-- 'loadBalancerAttributes', 'describeLoadBalancerAttributesResponse_loadBalancerAttributes' - Information about the load balancer attributes.
--
-- 'httpStatus', 'describeLoadBalancerAttributesResponse_httpStatus' - The response's http status code.
newDescribeLoadBalancerAttributesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeLoadBalancerAttributesResponse
newDescribeLoadBalancerAttributesResponse :: Int -> DescribeLoadBalancerAttributesResponse
newDescribeLoadBalancerAttributesResponse
  Int
pHttpStatus_ =
    DescribeLoadBalancerAttributesResponse'
      { $sel:loadBalancerAttributes:DescribeLoadBalancerAttributesResponse' :: Maybe LoadBalancerAttributes
loadBalancerAttributes =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeLoadBalancerAttributesResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Information about the load balancer attributes.
describeLoadBalancerAttributesResponse_loadBalancerAttributes :: Lens.Lens' DescribeLoadBalancerAttributesResponse (Prelude.Maybe LoadBalancerAttributes)
describeLoadBalancerAttributesResponse_loadBalancerAttributes :: Lens'
  DescribeLoadBalancerAttributesResponse
  (Maybe LoadBalancerAttributes)
describeLoadBalancerAttributesResponse_loadBalancerAttributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeLoadBalancerAttributesResponse' {Maybe LoadBalancerAttributes
loadBalancerAttributes :: Maybe LoadBalancerAttributes
$sel:loadBalancerAttributes:DescribeLoadBalancerAttributesResponse' :: DescribeLoadBalancerAttributesResponse
-> Maybe LoadBalancerAttributes
loadBalancerAttributes} -> Maybe LoadBalancerAttributes
loadBalancerAttributes) (\s :: DescribeLoadBalancerAttributesResponse
s@DescribeLoadBalancerAttributesResponse' {} Maybe LoadBalancerAttributes
a -> DescribeLoadBalancerAttributesResponse
s {$sel:loadBalancerAttributes:DescribeLoadBalancerAttributesResponse' :: Maybe LoadBalancerAttributes
loadBalancerAttributes = Maybe LoadBalancerAttributes
a} :: DescribeLoadBalancerAttributesResponse)

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

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