{-# 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.ELBV2.DescribeTargetGroups
-- 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 specified target groups or all of your target groups. By
-- default, all target groups are described. Alternatively, you can specify
-- one of the following to filter the results: the ARN of the load
-- balancer, the names of one or more target groups, or the ARNs of one or
-- more target groups.
--
-- This operation returns paginated results.
module Amazonka.ELBV2.DescribeTargetGroups
  ( -- * Creating a Request
    DescribeTargetGroups (..),
    newDescribeTargetGroups,

    -- * Request Lenses
    describeTargetGroups_loadBalancerArn,
    describeTargetGroups_marker,
    describeTargetGroups_names,
    describeTargetGroups_pageSize,
    describeTargetGroups_targetGroupArns,

    -- * Destructuring the Response
    DescribeTargetGroupsResponse (..),
    newDescribeTargetGroupsResponse,

    -- * Response Lenses
    describeTargetGroupsResponse_nextMarker,
    describeTargetGroupsResponse_targetGroups,
    describeTargetGroupsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeTargetGroups' smart constructor.
data DescribeTargetGroups = DescribeTargetGroups'
  { -- | The Amazon Resource Name (ARN) of the load balancer.
    DescribeTargetGroups -> Maybe Text
loadBalancerArn :: Prelude.Maybe Prelude.Text,
    -- | The marker for the next set of results. (You received this marker from a
    -- previous call.)
    DescribeTargetGroups -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The names of the target groups.
    DescribeTargetGroups -> Maybe [Text]
names :: Prelude.Maybe [Prelude.Text],
    -- | The maximum number of results to return with this call.
    DescribeTargetGroups -> Maybe Natural
pageSize :: Prelude.Maybe Prelude.Natural,
    -- | The Amazon Resource Names (ARN) of the target groups.
    DescribeTargetGroups -> Maybe [Text]
targetGroupArns :: Prelude.Maybe [Prelude.Text]
  }
  deriving (DescribeTargetGroups -> DescribeTargetGroups -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTargetGroups -> DescribeTargetGroups -> Bool
$c/= :: DescribeTargetGroups -> DescribeTargetGroups -> Bool
== :: DescribeTargetGroups -> DescribeTargetGroups -> Bool
$c== :: DescribeTargetGroups -> DescribeTargetGroups -> Bool
Prelude.Eq, ReadPrec [DescribeTargetGroups]
ReadPrec DescribeTargetGroups
Int -> ReadS DescribeTargetGroups
ReadS [DescribeTargetGroups]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTargetGroups]
$creadListPrec :: ReadPrec [DescribeTargetGroups]
readPrec :: ReadPrec DescribeTargetGroups
$creadPrec :: ReadPrec DescribeTargetGroups
readList :: ReadS [DescribeTargetGroups]
$creadList :: ReadS [DescribeTargetGroups]
readsPrec :: Int -> ReadS DescribeTargetGroups
$creadsPrec :: Int -> ReadS DescribeTargetGroups
Prelude.Read, Int -> DescribeTargetGroups -> ShowS
[DescribeTargetGroups] -> ShowS
DescribeTargetGroups -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTargetGroups] -> ShowS
$cshowList :: [DescribeTargetGroups] -> ShowS
show :: DescribeTargetGroups -> String
$cshow :: DescribeTargetGroups -> String
showsPrec :: Int -> DescribeTargetGroups -> ShowS
$cshowsPrec :: Int -> DescribeTargetGroups -> ShowS
Prelude.Show, forall x. Rep DescribeTargetGroups x -> DescribeTargetGroups
forall x. DescribeTargetGroups -> Rep DescribeTargetGroups x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeTargetGroups x -> DescribeTargetGroups
$cfrom :: forall x. DescribeTargetGroups -> Rep DescribeTargetGroups x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTargetGroups' 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:
--
-- 'loadBalancerArn', 'describeTargetGroups_loadBalancerArn' - The Amazon Resource Name (ARN) of the load balancer.
--
-- 'marker', 'describeTargetGroups_marker' - The marker for the next set of results. (You received this marker from a
-- previous call.)
--
-- 'names', 'describeTargetGroups_names' - The names of the target groups.
--
-- 'pageSize', 'describeTargetGroups_pageSize' - The maximum number of results to return with this call.
--
-- 'targetGroupArns', 'describeTargetGroups_targetGroupArns' - The Amazon Resource Names (ARN) of the target groups.
newDescribeTargetGroups ::
  DescribeTargetGroups
newDescribeTargetGroups :: DescribeTargetGroups
newDescribeTargetGroups =
  DescribeTargetGroups'
    { $sel:loadBalancerArn:DescribeTargetGroups' :: Maybe Text
loadBalancerArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeTargetGroups' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:names:DescribeTargetGroups' :: Maybe [Text]
names = forall a. Maybe a
Prelude.Nothing,
      $sel:pageSize:DescribeTargetGroups' :: Maybe Natural
pageSize = forall a. Maybe a
Prelude.Nothing,
      $sel:targetGroupArns:DescribeTargetGroups' :: Maybe [Text]
targetGroupArns = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the load balancer.
describeTargetGroups_loadBalancerArn :: Lens.Lens' DescribeTargetGroups (Prelude.Maybe Prelude.Text)
describeTargetGroups_loadBalancerArn :: Lens' DescribeTargetGroups (Maybe Text)
describeTargetGroups_loadBalancerArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTargetGroups' {Maybe Text
loadBalancerArn :: Maybe Text
$sel:loadBalancerArn:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Text
loadBalancerArn} -> Maybe Text
loadBalancerArn) (\s :: DescribeTargetGroups
s@DescribeTargetGroups' {} Maybe Text
a -> DescribeTargetGroups
s {$sel:loadBalancerArn:DescribeTargetGroups' :: Maybe Text
loadBalancerArn = Maybe Text
a} :: DescribeTargetGroups)

-- | The marker for the next set of results. (You received this marker from a
-- previous call.)
describeTargetGroups_marker :: Lens.Lens' DescribeTargetGroups (Prelude.Maybe Prelude.Text)
describeTargetGroups_marker :: Lens' DescribeTargetGroups (Maybe Text)
describeTargetGroups_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTargetGroups' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeTargetGroups
s@DescribeTargetGroups' {} Maybe Text
a -> DescribeTargetGroups
s {$sel:marker:DescribeTargetGroups' :: Maybe Text
marker = Maybe Text
a} :: DescribeTargetGroups)

-- | The names of the target groups.
describeTargetGroups_names :: Lens.Lens' DescribeTargetGroups (Prelude.Maybe [Prelude.Text])
describeTargetGroups_names :: Lens' DescribeTargetGroups (Maybe [Text])
describeTargetGroups_names = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTargetGroups' {Maybe [Text]
names :: Maybe [Text]
$sel:names:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe [Text]
names} -> Maybe [Text]
names) (\s :: DescribeTargetGroups
s@DescribeTargetGroups' {} Maybe [Text]
a -> DescribeTargetGroups
s {$sel:names:DescribeTargetGroups' :: Maybe [Text]
names = Maybe [Text]
a} :: DescribeTargetGroups) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The maximum number of results to return with this call.
describeTargetGroups_pageSize :: Lens.Lens' DescribeTargetGroups (Prelude.Maybe Prelude.Natural)
describeTargetGroups_pageSize :: Lens' DescribeTargetGroups (Maybe Natural)
describeTargetGroups_pageSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTargetGroups' {Maybe Natural
pageSize :: Maybe Natural
$sel:pageSize:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Natural
pageSize} -> Maybe Natural
pageSize) (\s :: DescribeTargetGroups
s@DescribeTargetGroups' {} Maybe Natural
a -> DescribeTargetGroups
s {$sel:pageSize:DescribeTargetGroups' :: Maybe Natural
pageSize = Maybe Natural
a} :: DescribeTargetGroups)

-- | The Amazon Resource Names (ARN) of the target groups.
describeTargetGroups_targetGroupArns :: Lens.Lens' DescribeTargetGroups (Prelude.Maybe [Prelude.Text])
describeTargetGroups_targetGroupArns :: Lens' DescribeTargetGroups (Maybe [Text])
describeTargetGroups_targetGroupArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTargetGroups' {Maybe [Text]
targetGroupArns :: Maybe [Text]
$sel:targetGroupArns:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe [Text]
targetGroupArns} -> Maybe [Text]
targetGroupArns) (\s :: DescribeTargetGroups
s@DescribeTargetGroups' {} Maybe [Text]
a -> DescribeTargetGroups
s {$sel:targetGroupArns:DescribeTargetGroups' :: Maybe [Text]
targetGroupArns = Maybe [Text]
a} :: DescribeTargetGroups) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.AWSPager DescribeTargetGroups where
  page :: DescribeTargetGroups
-> AWSResponse DescribeTargetGroups -> Maybe DescribeTargetGroups
page DescribeTargetGroups
rq AWSResponse DescribeTargetGroups
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeTargetGroups
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeTargetGroupsResponse (Maybe Text)
describeTargetGroupsResponse_nextMarker
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeTargetGroups
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeTargetGroupsResponse (Maybe [TargetGroup])
describeTargetGroupsResponse_targetGroups
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeTargetGroups
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeTargetGroups (Maybe Text)
describeTargetGroups_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeTargetGroups
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeTargetGroupsResponse (Maybe Text)
describeTargetGroupsResponse_nextMarker
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeTargetGroups where
  type
    AWSResponse DescribeTargetGroups =
      DescribeTargetGroupsResponse
  request :: (Service -> Service)
-> DescribeTargetGroups -> Request DescribeTargetGroups
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 DescribeTargetGroups
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeTargetGroups)))
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
"DescribeTargetGroupsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [TargetGroup] -> Int -> DescribeTargetGroupsResponse
DescribeTargetGroupsResponse'
            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
"NextMarker")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TargetGroups"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            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 DescribeTargetGroups where
  hashWithSalt :: Int -> DescribeTargetGroups -> Int
hashWithSalt Int
_salt DescribeTargetGroups' {Maybe Natural
Maybe [Text]
Maybe Text
targetGroupArns :: Maybe [Text]
pageSize :: Maybe Natural
names :: Maybe [Text]
marker :: Maybe Text
loadBalancerArn :: Maybe Text
$sel:targetGroupArns:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe [Text]
$sel:pageSize:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Natural
$sel:names:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe [Text]
$sel:marker:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Text
$sel:loadBalancerArn:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
loadBalancerArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
names
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
pageSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
targetGroupArns

instance Prelude.NFData DescribeTargetGroups where
  rnf :: DescribeTargetGroups -> ()
rnf DescribeTargetGroups' {Maybe Natural
Maybe [Text]
Maybe Text
targetGroupArns :: Maybe [Text]
pageSize :: Maybe Natural
names :: Maybe [Text]
marker :: Maybe Text
loadBalancerArn :: Maybe Text
$sel:targetGroupArns:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe [Text]
$sel:pageSize:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Natural
$sel:names:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe [Text]
$sel:marker:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Text
$sel:loadBalancerArn:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
loadBalancerArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
names
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
pageSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
targetGroupArns

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

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

instance Data.ToQuery DescribeTargetGroups where
  toQuery :: DescribeTargetGroups -> QueryString
toQuery DescribeTargetGroups' {Maybe Natural
Maybe [Text]
Maybe Text
targetGroupArns :: Maybe [Text]
pageSize :: Maybe Natural
names :: Maybe [Text]
marker :: Maybe Text
loadBalancerArn :: Maybe Text
$sel:targetGroupArns:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe [Text]
$sel:pageSize:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Natural
$sel:names:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe [Text]
$sel:marker:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Text
$sel:loadBalancerArn:DescribeTargetGroups' :: DescribeTargetGroups -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DescribeTargetGroups" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2015-12-01" :: Prelude.ByteString),
        ByteString
"LoadBalancerArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
loadBalancerArn,
        ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"Names"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
names),
        ByteString
"PageSize" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
pageSize,
        ByteString
"TargetGroupArns"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
targetGroupArns
            )
      ]

-- | /See:/ 'newDescribeTargetGroupsResponse' smart constructor.
data DescribeTargetGroupsResponse = DescribeTargetGroupsResponse'
  { -- | If there are additional results, this is the marker for the next set of
    -- results. Otherwise, this is null.
    DescribeTargetGroupsResponse -> Maybe Text
nextMarker :: Prelude.Maybe Prelude.Text,
    -- | Information about the target groups.
    DescribeTargetGroupsResponse -> Maybe [TargetGroup]
targetGroups :: Prelude.Maybe [TargetGroup],
    -- | The response's http status code.
    DescribeTargetGroupsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeTargetGroupsResponse
-> DescribeTargetGroupsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTargetGroupsResponse
-> DescribeTargetGroupsResponse -> Bool
$c/= :: DescribeTargetGroupsResponse
-> DescribeTargetGroupsResponse -> Bool
== :: DescribeTargetGroupsResponse
-> DescribeTargetGroupsResponse -> Bool
$c== :: DescribeTargetGroupsResponse
-> DescribeTargetGroupsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeTargetGroupsResponse]
ReadPrec DescribeTargetGroupsResponse
Int -> ReadS DescribeTargetGroupsResponse
ReadS [DescribeTargetGroupsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTargetGroupsResponse]
$creadListPrec :: ReadPrec [DescribeTargetGroupsResponse]
readPrec :: ReadPrec DescribeTargetGroupsResponse
$creadPrec :: ReadPrec DescribeTargetGroupsResponse
readList :: ReadS [DescribeTargetGroupsResponse]
$creadList :: ReadS [DescribeTargetGroupsResponse]
readsPrec :: Int -> ReadS DescribeTargetGroupsResponse
$creadsPrec :: Int -> ReadS DescribeTargetGroupsResponse
Prelude.Read, Int -> DescribeTargetGroupsResponse -> ShowS
[DescribeTargetGroupsResponse] -> ShowS
DescribeTargetGroupsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTargetGroupsResponse] -> ShowS
$cshowList :: [DescribeTargetGroupsResponse] -> ShowS
show :: DescribeTargetGroupsResponse -> String
$cshow :: DescribeTargetGroupsResponse -> String
showsPrec :: Int -> DescribeTargetGroupsResponse -> ShowS
$cshowsPrec :: Int -> DescribeTargetGroupsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeTargetGroupsResponse x -> DescribeTargetGroupsResponse
forall x.
DescribeTargetGroupsResponse -> Rep DescribeTargetGroupsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeTargetGroupsResponse x -> DescribeTargetGroupsResponse
$cfrom :: forall x.
DescribeTargetGroupsResponse -> Rep DescribeTargetGroupsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTargetGroupsResponse' 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:
--
-- 'nextMarker', 'describeTargetGroupsResponse_nextMarker' - If there are additional results, this is the marker for the next set of
-- results. Otherwise, this is null.
--
-- 'targetGroups', 'describeTargetGroupsResponse_targetGroups' - Information about the target groups.
--
-- 'httpStatus', 'describeTargetGroupsResponse_httpStatus' - The response's http status code.
newDescribeTargetGroupsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeTargetGroupsResponse
newDescribeTargetGroupsResponse :: Int -> DescribeTargetGroupsResponse
newDescribeTargetGroupsResponse Int
pHttpStatus_ =
  DescribeTargetGroupsResponse'
    { $sel:nextMarker:DescribeTargetGroupsResponse' :: Maybe Text
nextMarker =
        forall a. Maybe a
Prelude.Nothing,
      $sel:targetGroups:DescribeTargetGroupsResponse' :: Maybe [TargetGroup]
targetGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeTargetGroupsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | If there are additional results, this is the marker for the next set of
-- results. Otherwise, this is null.
describeTargetGroupsResponse_nextMarker :: Lens.Lens' DescribeTargetGroupsResponse (Prelude.Maybe Prelude.Text)
describeTargetGroupsResponse_nextMarker :: Lens' DescribeTargetGroupsResponse (Maybe Text)
describeTargetGroupsResponse_nextMarker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTargetGroupsResponse' {Maybe Text
nextMarker :: Maybe Text
$sel:nextMarker:DescribeTargetGroupsResponse' :: DescribeTargetGroupsResponse -> Maybe Text
nextMarker} -> Maybe Text
nextMarker) (\s :: DescribeTargetGroupsResponse
s@DescribeTargetGroupsResponse' {} Maybe Text
a -> DescribeTargetGroupsResponse
s {$sel:nextMarker:DescribeTargetGroupsResponse' :: Maybe Text
nextMarker = Maybe Text
a} :: DescribeTargetGroupsResponse)

-- | Information about the target groups.
describeTargetGroupsResponse_targetGroups :: Lens.Lens' DescribeTargetGroupsResponse (Prelude.Maybe [TargetGroup])
describeTargetGroupsResponse_targetGroups :: Lens' DescribeTargetGroupsResponse (Maybe [TargetGroup])
describeTargetGroupsResponse_targetGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTargetGroupsResponse' {Maybe [TargetGroup]
targetGroups :: Maybe [TargetGroup]
$sel:targetGroups:DescribeTargetGroupsResponse' :: DescribeTargetGroupsResponse -> Maybe [TargetGroup]
targetGroups} -> Maybe [TargetGroup]
targetGroups) (\s :: DescribeTargetGroupsResponse
s@DescribeTargetGroupsResponse' {} Maybe [TargetGroup]
a -> DescribeTargetGroupsResponse
s {$sel:targetGroups:DescribeTargetGroupsResponse' :: Maybe [TargetGroup]
targetGroups = Maybe [TargetGroup]
a} :: DescribeTargetGroupsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance Prelude.NFData DescribeTargetGroupsResponse where
  rnf :: DescribeTargetGroupsResponse -> ()
rnf DescribeTargetGroupsResponse' {Int
Maybe [TargetGroup]
Maybe Text
httpStatus :: Int
targetGroups :: Maybe [TargetGroup]
nextMarker :: Maybe Text
$sel:httpStatus:DescribeTargetGroupsResponse' :: DescribeTargetGroupsResponse -> Int
$sel:targetGroups:DescribeTargetGroupsResponse' :: DescribeTargetGroupsResponse -> Maybe [TargetGroup]
$sel:nextMarker:DescribeTargetGroupsResponse' :: DescribeTargetGroupsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextMarker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [TargetGroup]
targetGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus