{-# 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.DescribeRules
-- 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 rules or the rules for the specified listener.
-- You must specify either a listener or one or more rules.
--
-- This operation returns paginated results.
module Amazonka.ELBV2.DescribeRules
  ( -- * Creating a Request
    DescribeRules (..),
    newDescribeRules,

    -- * Request Lenses
    describeRules_listenerArn,
    describeRules_marker,
    describeRules_pageSize,
    describeRules_ruleArns,

    -- * Destructuring the Response
    DescribeRulesResponse (..),
    newDescribeRulesResponse,

    -- * Response Lenses
    describeRulesResponse_nextMarker,
    describeRulesResponse_rules,
    describeRulesResponse_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:/ 'newDescribeRules' smart constructor.
data DescribeRules = DescribeRules'
  { -- | The Amazon Resource Name (ARN) of the listener.
    DescribeRules -> Maybe Text
listenerArn :: Prelude.Maybe Prelude.Text,
    -- | The marker for the next set of results. (You received this marker from a
    -- previous call.)
    DescribeRules -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of results to return with this call.
    DescribeRules -> Maybe Natural
pageSize :: Prelude.Maybe Prelude.Natural,
    -- | The Amazon Resource Names (ARN) of the rules.
    DescribeRules -> Maybe [Text]
ruleArns :: Prelude.Maybe [Prelude.Text]
  }
  deriving (DescribeRules -> DescribeRules -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRules -> DescribeRules -> Bool
$c/= :: DescribeRules -> DescribeRules -> Bool
== :: DescribeRules -> DescribeRules -> Bool
$c== :: DescribeRules -> DescribeRules -> Bool
Prelude.Eq, ReadPrec [DescribeRules]
ReadPrec DescribeRules
Int -> ReadS DescribeRules
ReadS [DescribeRules]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeRules]
$creadListPrec :: ReadPrec [DescribeRules]
readPrec :: ReadPrec DescribeRules
$creadPrec :: ReadPrec DescribeRules
readList :: ReadS [DescribeRules]
$creadList :: ReadS [DescribeRules]
readsPrec :: Int -> ReadS DescribeRules
$creadsPrec :: Int -> ReadS DescribeRules
Prelude.Read, Int -> DescribeRules -> ShowS
[DescribeRules] -> ShowS
DescribeRules -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRules] -> ShowS
$cshowList :: [DescribeRules] -> ShowS
show :: DescribeRules -> String
$cshow :: DescribeRules -> String
showsPrec :: Int -> DescribeRules -> ShowS
$cshowsPrec :: Int -> DescribeRules -> ShowS
Prelude.Show, forall x. Rep DescribeRules x -> DescribeRules
forall x. DescribeRules -> Rep DescribeRules x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeRules x -> DescribeRules
$cfrom :: forall x. DescribeRules -> Rep DescribeRules x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRules' 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:
--
-- 'listenerArn', 'describeRules_listenerArn' - The Amazon Resource Name (ARN) of the listener.
--
-- 'marker', 'describeRules_marker' - The marker for the next set of results. (You received this marker from a
-- previous call.)
--
-- 'pageSize', 'describeRules_pageSize' - The maximum number of results to return with this call.
--
-- 'ruleArns', 'describeRules_ruleArns' - The Amazon Resource Names (ARN) of the rules.
newDescribeRules ::
  DescribeRules
newDescribeRules :: DescribeRules
newDescribeRules =
  DescribeRules'
    { $sel:listenerArn:DescribeRules' :: Maybe Text
listenerArn = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeRules' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:pageSize:DescribeRules' :: Maybe Natural
pageSize = forall a. Maybe a
Prelude.Nothing,
      $sel:ruleArns:DescribeRules' :: Maybe [Text]
ruleArns = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the listener.
describeRules_listenerArn :: Lens.Lens' DescribeRules (Prelude.Maybe Prelude.Text)
describeRules_listenerArn :: Lens' DescribeRules (Maybe Text)
describeRules_listenerArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRules' {Maybe Text
listenerArn :: Maybe Text
$sel:listenerArn:DescribeRules' :: DescribeRules -> Maybe Text
listenerArn} -> Maybe Text
listenerArn) (\s :: DescribeRules
s@DescribeRules' {} Maybe Text
a -> DescribeRules
s {$sel:listenerArn:DescribeRules' :: Maybe Text
listenerArn = Maybe Text
a} :: DescribeRules)

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

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

-- | The Amazon Resource Names (ARN) of the rules.
describeRules_ruleArns :: Lens.Lens' DescribeRules (Prelude.Maybe [Prelude.Text])
describeRules_ruleArns :: Lens' DescribeRules (Maybe [Text])
describeRules_ruleArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRules' {Maybe [Text]
ruleArns :: Maybe [Text]
$sel:ruleArns:DescribeRules' :: DescribeRules -> Maybe [Text]
ruleArns} -> Maybe [Text]
ruleArns) (\s :: DescribeRules
s@DescribeRules' {} Maybe [Text]
a -> DescribeRules
s {$sel:ruleArns:DescribeRules' :: Maybe [Text]
ruleArns = Maybe [Text]
a} :: DescribeRules) 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 DescribeRules where
  page :: DescribeRules -> AWSResponse DescribeRules -> Maybe DescribeRules
page DescribeRules
rq AWSResponse DescribeRules
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeRules
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRulesResponse (Maybe Text)
describeRulesResponse_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 DescribeRules
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRulesResponse (Maybe [Rule])
describeRulesResponse_rules
            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.$ DescribeRules
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeRules (Maybe Text)
describeRules_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeRules
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRulesResponse (Maybe Text)
describeRulesResponse_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 DescribeRules where
  type
    AWSResponse DescribeRules =
      DescribeRulesResponse
  request :: (Service -> Service) -> DescribeRules -> Request DescribeRules
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 DescribeRules
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeRules)))
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
"DescribeRulesResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text -> Maybe [Rule] -> Int -> DescribeRulesResponse
DescribeRulesResponse'
            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
"Rules"
                            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 DescribeRules where
  hashWithSalt :: Int -> DescribeRules -> Int
hashWithSalt Int
_salt DescribeRules' {Maybe Natural
Maybe [Text]
Maybe Text
ruleArns :: Maybe [Text]
pageSize :: Maybe Natural
marker :: Maybe Text
listenerArn :: Maybe Text
$sel:ruleArns:DescribeRules' :: DescribeRules -> Maybe [Text]
$sel:pageSize:DescribeRules' :: DescribeRules -> Maybe Natural
$sel:marker:DescribeRules' :: DescribeRules -> Maybe Text
$sel:listenerArn:DescribeRules' :: DescribeRules -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
listenerArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
pageSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
ruleArns

instance Prelude.NFData DescribeRules where
  rnf :: DescribeRules -> ()
rnf DescribeRules' {Maybe Natural
Maybe [Text]
Maybe Text
ruleArns :: Maybe [Text]
pageSize :: Maybe Natural
marker :: Maybe Text
listenerArn :: Maybe Text
$sel:ruleArns:DescribeRules' :: DescribeRules -> Maybe [Text]
$sel:pageSize:DescribeRules' :: DescribeRules -> Maybe Natural
$sel:marker:DescribeRules' :: DescribeRules -> Maybe Text
$sel:listenerArn:DescribeRules' :: DescribeRules -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
listenerArn
      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 Natural
pageSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
ruleArns

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

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

instance Data.ToQuery DescribeRules where
  toQuery :: DescribeRules -> QueryString
toQuery DescribeRules' {Maybe Natural
Maybe [Text]
Maybe Text
ruleArns :: Maybe [Text]
pageSize :: Maybe Natural
marker :: Maybe Text
listenerArn :: Maybe Text
$sel:ruleArns:DescribeRules' :: DescribeRules -> Maybe [Text]
$sel:pageSize:DescribeRules' :: DescribeRules -> Maybe Natural
$sel:marker:DescribeRules' :: DescribeRules -> Maybe Text
$sel:listenerArn:DescribeRules' :: DescribeRules -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DescribeRules" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2015-12-01" :: Prelude.ByteString),
        ByteString
"ListenerArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
listenerArn,
        ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"PageSize" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
pageSize,
        ByteString
"RuleArns"
          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]
ruleArns)
      ]

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

-- |
-- Create a value of 'DescribeRulesResponse' 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', 'describeRulesResponse_nextMarker' - If there are additional results, this is the marker for the next set of
-- results. Otherwise, this is null.
--
-- 'rules', 'describeRulesResponse_rules' - Information about the rules.
--
-- 'httpStatus', 'describeRulesResponse_httpStatus' - The response's http status code.
newDescribeRulesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeRulesResponse
newDescribeRulesResponse :: Int -> DescribeRulesResponse
newDescribeRulesResponse Int
pHttpStatus_ =
  DescribeRulesResponse'
    { $sel:nextMarker:DescribeRulesResponse' :: Maybe Text
nextMarker =
        forall a. Maybe a
Prelude.Nothing,
      $sel:rules:DescribeRulesResponse' :: Maybe [Rule]
rules = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeRulesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | Information about the rules.
describeRulesResponse_rules :: Lens.Lens' DescribeRulesResponse (Prelude.Maybe [Rule])
describeRulesResponse_rules :: Lens' DescribeRulesResponse (Maybe [Rule])
describeRulesResponse_rules = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRulesResponse' {Maybe [Rule]
rules :: Maybe [Rule]
$sel:rules:DescribeRulesResponse' :: DescribeRulesResponse -> Maybe [Rule]
rules} -> Maybe [Rule]
rules) (\s :: DescribeRulesResponse
s@DescribeRulesResponse' {} Maybe [Rule]
a -> DescribeRulesResponse
s {$sel:rules:DescribeRulesResponse' :: Maybe [Rule]
rules = Maybe [Rule]
a} :: DescribeRulesResponse) 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.
describeRulesResponse_httpStatus :: Lens.Lens' DescribeRulesResponse Prelude.Int
describeRulesResponse_httpStatus :: Lens' DescribeRulesResponse Int
describeRulesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRulesResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeRulesResponse' :: DescribeRulesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeRulesResponse
s@DescribeRulesResponse' {} Int
a -> DescribeRulesResponse
s {$sel:httpStatus:DescribeRulesResponse' :: Int
httpStatus = Int
a} :: DescribeRulesResponse)

instance Prelude.NFData DescribeRulesResponse where
  rnf :: DescribeRulesResponse -> ()
rnf DescribeRulesResponse' {Int
Maybe [Rule]
Maybe Text
httpStatus :: Int
rules :: Maybe [Rule]
nextMarker :: Maybe Text
$sel:httpStatus:DescribeRulesResponse' :: DescribeRulesResponse -> Int
$sel:rules:DescribeRulesResponse' :: DescribeRulesResponse -> Maybe [Rule]
$sel:nextMarker:DescribeRulesResponse' :: DescribeRulesResponse -> 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 [Rule]
rules
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus