{-# 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.SES.DescribeReceiptRuleSet
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns the details of the specified receipt rule set.
--
-- For information about managing receipt rule sets, see the
-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
--
-- You can execute this operation no more than once per second.
module Amazonka.SES.DescribeReceiptRuleSet
  ( -- * Creating a Request
    DescribeReceiptRuleSet (..),
    newDescribeReceiptRuleSet,

    -- * Request Lenses
    describeReceiptRuleSet_ruleSetName,

    -- * Destructuring the Response
    DescribeReceiptRuleSetResponse (..),
    newDescribeReceiptRuleSetResponse,

    -- * Response Lenses
    describeReceiptRuleSetResponse_metadata,
    describeReceiptRuleSetResponse_rules,
    describeReceiptRuleSetResponse_httpStatus,
  )
where

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

-- | Represents a request to return the details of a receipt rule set. You
-- use receipt rule sets to receive email with Amazon SES. For more
-- information, see the
-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
--
-- /See:/ 'newDescribeReceiptRuleSet' smart constructor.
data DescribeReceiptRuleSet = DescribeReceiptRuleSet'
  { -- | The name of the receipt rule set to describe.
    DescribeReceiptRuleSet -> Text
ruleSetName :: Prelude.Text
  }
  deriving (DescribeReceiptRuleSet -> DescribeReceiptRuleSet -> Bool
(DescribeReceiptRuleSet -> DescribeReceiptRuleSet -> Bool)
-> (DescribeReceiptRuleSet -> DescribeReceiptRuleSet -> Bool)
-> Eq DescribeReceiptRuleSet
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DescribeReceiptRuleSet -> DescribeReceiptRuleSet -> Bool
== :: DescribeReceiptRuleSet -> DescribeReceiptRuleSet -> Bool
$c/= :: DescribeReceiptRuleSet -> DescribeReceiptRuleSet -> Bool
/= :: DescribeReceiptRuleSet -> DescribeReceiptRuleSet -> Bool
Prelude.Eq, ReadPrec [DescribeReceiptRuleSet]
ReadPrec DescribeReceiptRuleSet
Int -> ReadS DescribeReceiptRuleSet
ReadS [DescribeReceiptRuleSet]
(Int -> ReadS DescribeReceiptRuleSet)
-> ReadS [DescribeReceiptRuleSet]
-> ReadPrec DescribeReceiptRuleSet
-> ReadPrec [DescribeReceiptRuleSet]
-> Read DescribeReceiptRuleSet
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS DescribeReceiptRuleSet
readsPrec :: Int -> ReadS DescribeReceiptRuleSet
$creadList :: ReadS [DescribeReceiptRuleSet]
readList :: ReadS [DescribeReceiptRuleSet]
$creadPrec :: ReadPrec DescribeReceiptRuleSet
readPrec :: ReadPrec DescribeReceiptRuleSet
$creadListPrec :: ReadPrec [DescribeReceiptRuleSet]
readListPrec :: ReadPrec [DescribeReceiptRuleSet]
Prelude.Read, Int -> DescribeReceiptRuleSet -> ShowS
[DescribeReceiptRuleSet] -> ShowS
DescribeReceiptRuleSet -> String
(Int -> DescribeReceiptRuleSet -> ShowS)
-> (DescribeReceiptRuleSet -> String)
-> ([DescribeReceiptRuleSet] -> ShowS)
-> Show DescribeReceiptRuleSet
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DescribeReceiptRuleSet -> ShowS
showsPrec :: Int -> DescribeReceiptRuleSet -> ShowS
$cshow :: DescribeReceiptRuleSet -> String
show :: DescribeReceiptRuleSet -> String
$cshowList :: [DescribeReceiptRuleSet] -> ShowS
showList :: [DescribeReceiptRuleSet] -> ShowS
Prelude.Show, (forall x. DescribeReceiptRuleSet -> Rep DescribeReceiptRuleSet x)
-> (forall x.
    Rep DescribeReceiptRuleSet x -> DescribeReceiptRuleSet)
-> Generic DescribeReceiptRuleSet
forall x. Rep DescribeReceiptRuleSet x -> DescribeReceiptRuleSet
forall x. DescribeReceiptRuleSet -> Rep DescribeReceiptRuleSet x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DescribeReceiptRuleSet -> Rep DescribeReceiptRuleSet x
from :: forall x. DescribeReceiptRuleSet -> Rep DescribeReceiptRuleSet x
$cto :: forall x. Rep DescribeReceiptRuleSet x -> DescribeReceiptRuleSet
to :: forall x. Rep DescribeReceiptRuleSet x -> DescribeReceiptRuleSet
Prelude.Generic)

-- |
-- Create a value of 'DescribeReceiptRuleSet' 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:
--
-- 'ruleSetName', 'describeReceiptRuleSet_ruleSetName' - The name of the receipt rule set to describe.
newDescribeReceiptRuleSet ::
  -- | 'ruleSetName'
  Prelude.Text ->
  DescribeReceiptRuleSet
newDescribeReceiptRuleSet :: Text -> DescribeReceiptRuleSet
newDescribeReceiptRuleSet Text
pRuleSetName_ =
  DescribeReceiptRuleSet'
    { $sel:ruleSetName:DescribeReceiptRuleSet' :: Text
ruleSetName =
        Text
pRuleSetName_
    }

-- | The name of the receipt rule set to describe.
describeReceiptRuleSet_ruleSetName :: Lens.Lens' DescribeReceiptRuleSet Prelude.Text
describeReceiptRuleSet_ruleSetName :: Lens' DescribeReceiptRuleSet Text
describeReceiptRuleSet_ruleSetName = (DescribeReceiptRuleSet -> Text)
-> (DescribeReceiptRuleSet -> Text -> DescribeReceiptRuleSet)
-> Lens' DescribeReceiptRuleSet Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReceiptRuleSet' {Text
$sel:ruleSetName:DescribeReceiptRuleSet' :: DescribeReceiptRuleSet -> Text
ruleSetName :: Text
ruleSetName} -> Text
ruleSetName) (\s :: DescribeReceiptRuleSet
s@DescribeReceiptRuleSet' {} Text
a -> DescribeReceiptRuleSet
s {ruleSetName = a} :: DescribeReceiptRuleSet)

instance Core.AWSRequest DescribeReceiptRuleSet where
  type
    AWSResponse DescribeReceiptRuleSet =
      DescribeReceiptRuleSetResponse
  request :: (Service -> Service)
-> DescribeReceiptRuleSet -> Request DescribeReceiptRuleSet
request Service -> Service
overrides =
    Service -> DescribeReceiptRuleSet -> Request DescribeReceiptRuleSet
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 DescribeReceiptRuleSet
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeReceiptRuleSet)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse DescribeReceiptRuleSet))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeReceiptRuleSet
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeReceiptRuleSet)))
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
"DescribeReceiptRuleSetResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe ReceiptRuleSetMetadata
-> Maybe [ReceiptRule] -> Int -> DescribeReceiptRuleSetResponse
DescribeReceiptRuleSetResponse'
            (Maybe ReceiptRuleSetMetadata
 -> Maybe [ReceiptRule] -> Int -> DescribeReceiptRuleSetResponse)
-> Either String (Maybe ReceiptRuleSetMetadata)
-> Either
     String
     (Maybe [ReceiptRule] -> Int -> DescribeReceiptRuleSetResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe ReceiptRuleSetMetadata)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Metadata")
            Either
  String
  (Maybe [ReceiptRule] -> Int -> DescribeReceiptRuleSetResponse)
-> Either String (Maybe [ReceiptRule])
-> Either String (Int -> DescribeReceiptRuleSetResponse)
forall a b.
Either String (a -> b) -> Either String a -> Either String b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Rules"
                            Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [ReceiptRule]))
-> Either String (Maybe [ReceiptRule])
forall a b.
Either String a -> (a -> Either String b) -> Either String b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [ReceiptRule])
-> [Node] -> Either String (Maybe [ReceiptRule])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [ReceiptRule]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            Either String (Int -> DescribeReceiptRuleSetResponse)
-> Either String Int
-> Either String DescribeReceiptRuleSetResponse
forall a b.
Either String (a -> b) -> Either String a -> Either String b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall a. a -> Either String a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeReceiptRuleSet where
  hashWithSalt :: Int -> DescribeReceiptRuleSet -> Int
hashWithSalt Int
_salt DescribeReceiptRuleSet' {Text
$sel:ruleSetName:DescribeReceiptRuleSet' :: DescribeReceiptRuleSet -> Text
ruleSetName :: Text
..} =
    Int
_salt Int -> Text -> Int
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
ruleSetName

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

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

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

instance Data.ToQuery DescribeReceiptRuleSet where
  toQuery :: DescribeReceiptRuleSet -> QueryString
toQuery DescribeReceiptRuleSet' {Text
$sel:ruleSetName:DescribeReceiptRuleSet' :: DescribeReceiptRuleSet -> Text
ruleSetName :: Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DescribeReceiptRuleSet" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-12-01" :: Prelude.ByteString),
        ByteString
"RuleSetName" ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
ruleSetName
      ]

-- | Represents the details of the specified receipt rule set.
--
-- /See:/ 'newDescribeReceiptRuleSetResponse' smart constructor.
data DescribeReceiptRuleSetResponse = DescribeReceiptRuleSetResponse'
  { -- | The metadata for the receipt rule set, which consists of the rule set
    -- name and the timestamp of when the rule set was created.
    DescribeReceiptRuleSetResponse -> Maybe ReceiptRuleSetMetadata
metadata :: Prelude.Maybe ReceiptRuleSetMetadata,
    -- | A list of the receipt rules that belong to the specified receipt rule
    -- set.
    DescribeReceiptRuleSetResponse -> Maybe [ReceiptRule]
rules :: Prelude.Maybe [ReceiptRule],
    -- | The response's http status code.
    DescribeReceiptRuleSetResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeReceiptRuleSetResponse
-> DescribeReceiptRuleSetResponse -> Bool
(DescribeReceiptRuleSetResponse
 -> DescribeReceiptRuleSetResponse -> Bool)
-> (DescribeReceiptRuleSetResponse
    -> DescribeReceiptRuleSetResponse -> Bool)
-> Eq DescribeReceiptRuleSetResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DescribeReceiptRuleSetResponse
-> DescribeReceiptRuleSetResponse -> Bool
== :: DescribeReceiptRuleSetResponse
-> DescribeReceiptRuleSetResponse -> Bool
$c/= :: DescribeReceiptRuleSetResponse
-> DescribeReceiptRuleSetResponse -> Bool
/= :: DescribeReceiptRuleSetResponse
-> DescribeReceiptRuleSetResponse -> Bool
Prelude.Eq, ReadPrec [DescribeReceiptRuleSetResponse]
ReadPrec DescribeReceiptRuleSetResponse
Int -> ReadS DescribeReceiptRuleSetResponse
ReadS [DescribeReceiptRuleSetResponse]
(Int -> ReadS DescribeReceiptRuleSetResponse)
-> ReadS [DescribeReceiptRuleSetResponse]
-> ReadPrec DescribeReceiptRuleSetResponse
-> ReadPrec [DescribeReceiptRuleSetResponse]
-> Read DescribeReceiptRuleSetResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS DescribeReceiptRuleSetResponse
readsPrec :: Int -> ReadS DescribeReceiptRuleSetResponse
$creadList :: ReadS [DescribeReceiptRuleSetResponse]
readList :: ReadS [DescribeReceiptRuleSetResponse]
$creadPrec :: ReadPrec DescribeReceiptRuleSetResponse
readPrec :: ReadPrec DescribeReceiptRuleSetResponse
$creadListPrec :: ReadPrec [DescribeReceiptRuleSetResponse]
readListPrec :: ReadPrec [DescribeReceiptRuleSetResponse]
Prelude.Read, Int -> DescribeReceiptRuleSetResponse -> ShowS
[DescribeReceiptRuleSetResponse] -> ShowS
DescribeReceiptRuleSetResponse -> String
(Int -> DescribeReceiptRuleSetResponse -> ShowS)
-> (DescribeReceiptRuleSetResponse -> String)
-> ([DescribeReceiptRuleSetResponse] -> ShowS)
-> Show DescribeReceiptRuleSetResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DescribeReceiptRuleSetResponse -> ShowS
showsPrec :: Int -> DescribeReceiptRuleSetResponse -> ShowS
$cshow :: DescribeReceiptRuleSetResponse -> String
show :: DescribeReceiptRuleSetResponse -> String
$cshowList :: [DescribeReceiptRuleSetResponse] -> ShowS
showList :: [DescribeReceiptRuleSetResponse] -> ShowS
Prelude.Show, (forall x.
 DescribeReceiptRuleSetResponse
 -> Rep DescribeReceiptRuleSetResponse x)
-> (forall x.
    Rep DescribeReceiptRuleSetResponse x
    -> DescribeReceiptRuleSetResponse)
-> Generic DescribeReceiptRuleSetResponse
forall x.
Rep DescribeReceiptRuleSetResponse x
-> DescribeReceiptRuleSetResponse
forall x.
DescribeReceiptRuleSetResponse
-> Rep DescribeReceiptRuleSetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
DescribeReceiptRuleSetResponse
-> Rep DescribeReceiptRuleSetResponse x
from :: forall x.
DescribeReceiptRuleSetResponse
-> Rep DescribeReceiptRuleSetResponse x
$cto :: forall x.
Rep DescribeReceiptRuleSetResponse x
-> DescribeReceiptRuleSetResponse
to :: forall x.
Rep DescribeReceiptRuleSetResponse x
-> DescribeReceiptRuleSetResponse
Prelude.Generic)

-- |
-- Create a value of 'DescribeReceiptRuleSetResponse' 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:
--
-- 'metadata', 'describeReceiptRuleSetResponse_metadata' - The metadata for the receipt rule set, which consists of the rule set
-- name and the timestamp of when the rule set was created.
--
-- 'rules', 'describeReceiptRuleSetResponse_rules' - A list of the receipt rules that belong to the specified receipt rule
-- set.
--
-- 'httpStatus', 'describeReceiptRuleSetResponse_httpStatus' - The response's http status code.
newDescribeReceiptRuleSetResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeReceiptRuleSetResponse
newDescribeReceiptRuleSetResponse :: Int -> DescribeReceiptRuleSetResponse
newDescribeReceiptRuleSetResponse Int
pHttpStatus_ =
  DescribeReceiptRuleSetResponse'
    { $sel:metadata:DescribeReceiptRuleSetResponse' :: Maybe ReceiptRuleSetMetadata
metadata =
        Maybe ReceiptRuleSetMetadata
forall a. Maybe a
Prelude.Nothing,
      $sel:rules:DescribeReceiptRuleSetResponse' :: Maybe [ReceiptRule]
rules = Maybe [ReceiptRule]
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeReceiptRuleSetResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The metadata for the receipt rule set, which consists of the rule set
-- name and the timestamp of when the rule set was created.
describeReceiptRuleSetResponse_metadata :: Lens.Lens' DescribeReceiptRuleSetResponse (Prelude.Maybe ReceiptRuleSetMetadata)
describeReceiptRuleSetResponse_metadata :: Lens' DescribeReceiptRuleSetResponse (Maybe ReceiptRuleSetMetadata)
describeReceiptRuleSetResponse_metadata = (DescribeReceiptRuleSetResponse -> Maybe ReceiptRuleSetMetadata)
-> (DescribeReceiptRuleSetResponse
    -> Maybe ReceiptRuleSetMetadata -> DescribeReceiptRuleSetResponse)
-> Lens'
     DescribeReceiptRuleSetResponse (Maybe ReceiptRuleSetMetadata)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReceiptRuleSetResponse' {Maybe ReceiptRuleSetMetadata
$sel:metadata:DescribeReceiptRuleSetResponse' :: DescribeReceiptRuleSetResponse -> Maybe ReceiptRuleSetMetadata
metadata :: Maybe ReceiptRuleSetMetadata
metadata} -> Maybe ReceiptRuleSetMetadata
metadata) (\s :: DescribeReceiptRuleSetResponse
s@DescribeReceiptRuleSetResponse' {} Maybe ReceiptRuleSetMetadata
a -> DescribeReceiptRuleSetResponse
s {metadata = a} :: DescribeReceiptRuleSetResponse)

-- | A list of the receipt rules that belong to the specified receipt rule
-- set.
describeReceiptRuleSetResponse_rules :: Lens.Lens' DescribeReceiptRuleSetResponse (Prelude.Maybe [ReceiptRule])
describeReceiptRuleSetResponse_rules :: Lens' DescribeReceiptRuleSetResponse (Maybe [ReceiptRule])
describeReceiptRuleSetResponse_rules = (DescribeReceiptRuleSetResponse -> Maybe [ReceiptRule])
-> (DescribeReceiptRuleSetResponse
    -> Maybe [ReceiptRule] -> DescribeReceiptRuleSetResponse)
-> Lens' DescribeReceiptRuleSetResponse (Maybe [ReceiptRule])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReceiptRuleSetResponse' {Maybe [ReceiptRule]
$sel:rules:DescribeReceiptRuleSetResponse' :: DescribeReceiptRuleSetResponse -> Maybe [ReceiptRule]
rules :: Maybe [ReceiptRule]
rules} -> Maybe [ReceiptRule]
rules) (\s :: DescribeReceiptRuleSetResponse
s@DescribeReceiptRuleSetResponse' {} Maybe [ReceiptRule]
a -> DescribeReceiptRuleSetResponse
s {rules = a} :: DescribeReceiptRuleSetResponse) ((Maybe [ReceiptRule] -> f (Maybe [ReceiptRule]))
 -> DescribeReceiptRuleSetResponse
 -> f DescribeReceiptRuleSetResponse)
-> ((Maybe [ReceiptRule] -> f (Maybe [ReceiptRule]))
    -> Maybe [ReceiptRule] -> f (Maybe [ReceiptRule]))
-> (Maybe [ReceiptRule] -> f (Maybe [ReceiptRule]))
-> DescribeReceiptRuleSetResponse
-> f DescribeReceiptRuleSetResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [ReceiptRule] [ReceiptRule] [ReceiptRule] [ReceiptRule]
-> Iso
     (Maybe [ReceiptRule])
     (Maybe [ReceiptRule])
     (Maybe [ReceiptRule])
     (Maybe [ReceiptRule])
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 AnIso [ReceiptRule] [ReceiptRule] [ReceiptRule] [ReceiptRule]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Iso [ReceiptRule] [ReceiptRule] [ReceiptRule] [ReceiptRule]
Lens.coerced

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

instance
  Prelude.NFData
    DescribeReceiptRuleSetResponse
  where
  rnf :: DescribeReceiptRuleSetResponse -> ()
rnf DescribeReceiptRuleSetResponse' {Int
Maybe [ReceiptRule]
Maybe ReceiptRuleSetMetadata
$sel:metadata:DescribeReceiptRuleSetResponse' :: DescribeReceiptRuleSetResponse -> Maybe ReceiptRuleSetMetadata
$sel:rules:DescribeReceiptRuleSetResponse' :: DescribeReceiptRuleSetResponse -> Maybe [ReceiptRule]
$sel:httpStatus:DescribeReceiptRuleSetResponse' :: DescribeReceiptRuleSetResponse -> Int
metadata :: Maybe ReceiptRuleSetMetadata
rules :: Maybe [ReceiptRule]
httpStatus :: Int
..} =
    Maybe ReceiptRuleSetMetadata -> ()
forall a. NFData a => a -> ()
Prelude.rnf Maybe ReceiptRuleSetMetadata
metadata
      () -> () -> ()
forall a b. a -> b -> b
`Prelude.seq` Maybe [ReceiptRule] -> ()
forall a. NFData a => a -> ()
Prelude.rnf Maybe [ReceiptRule]
rules
      () -> () -> ()
forall a b. a -> b -> b
`Prelude.seq` Int -> ()
forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus