{-# 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.EC2.DescribeAddressesAttribute
-- 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 of the specified Elastic IP addresses. For
-- requirements, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#Using_Elastic_Addressing_Reverse_DNS Using reverse DNS for email applications>.
--
-- This operation returns paginated results.
module Amazonka.EC2.DescribeAddressesAttribute
  ( -- * Creating a Request
    DescribeAddressesAttribute (..),
    newDescribeAddressesAttribute,

    -- * Request Lenses
    describeAddressesAttribute_allocationIds,
    describeAddressesAttribute_attribute,
    describeAddressesAttribute_dryRun,
    describeAddressesAttribute_maxResults,
    describeAddressesAttribute_nextToken,

    -- * Destructuring the Response
    DescribeAddressesAttributeResponse (..),
    newDescribeAddressesAttributeResponse,

    -- * Response Lenses
    describeAddressesAttributeResponse_addresses,
    describeAddressesAttributeResponse_nextToken,
    describeAddressesAttributeResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeAddressesAttribute' smart constructor.
data DescribeAddressesAttribute = DescribeAddressesAttribute'
  { -- | [EC2-VPC] The allocation IDs.
    DescribeAddressesAttribute -> Maybe [Text]
allocationIds :: Prelude.Maybe [Prelude.Text],
    -- | The attribute of the IP address.
    DescribeAddressesAttribute -> Maybe AddressAttributeName
attribute :: Prelude.Maybe AddressAttributeName,
    -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    DescribeAddressesAttribute -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The maximum number of results to return with a single call. To retrieve
    -- the remaining results, make another call with the returned @nextToken@
    -- value.
    DescribeAddressesAttribute -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token for the next page of results.
    DescribeAddressesAttribute -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeAddressesAttribute -> DescribeAddressesAttribute -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeAddressesAttribute -> DescribeAddressesAttribute -> Bool
$c/= :: DescribeAddressesAttribute -> DescribeAddressesAttribute -> Bool
== :: DescribeAddressesAttribute -> DescribeAddressesAttribute -> Bool
$c== :: DescribeAddressesAttribute -> DescribeAddressesAttribute -> Bool
Prelude.Eq, ReadPrec [DescribeAddressesAttribute]
ReadPrec DescribeAddressesAttribute
Int -> ReadS DescribeAddressesAttribute
ReadS [DescribeAddressesAttribute]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeAddressesAttribute]
$creadListPrec :: ReadPrec [DescribeAddressesAttribute]
readPrec :: ReadPrec DescribeAddressesAttribute
$creadPrec :: ReadPrec DescribeAddressesAttribute
readList :: ReadS [DescribeAddressesAttribute]
$creadList :: ReadS [DescribeAddressesAttribute]
readsPrec :: Int -> ReadS DescribeAddressesAttribute
$creadsPrec :: Int -> ReadS DescribeAddressesAttribute
Prelude.Read, Int -> DescribeAddressesAttribute -> ShowS
[DescribeAddressesAttribute] -> ShowS
DescribeAddressesAttribute -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeAddressesAttribute] -> ShowS
$cshowList :: [DescribeAddressesAttribute] -> ShowS
show :: DescribeAddressesAttribute -> String
$cshow :: DescribeAddressesAttribute -> String
showsPrec :: Int -> DescribeAddressesAttribute -> ShowS
$cshowsPrec :: Int -> DescribeAddressesAttribute -> ShowS
Prelude.Show, forall x.
Rep DescribeAddressesAttribute x -> DescribeAddressesAttribute
forall x.
DescribeAddressesAttribute -> Rep DescribeAddressesAttribute x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeAddressesAttribute x -> DescribeAddressesAttribute
$cfrom :: forall x.
DescribeAddressesAttribute -> Rep DescribeAddressesAttribute x
Prelude.Generic)

-- |
-- Create a value of 'DescribeAddressesAttribute' 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:
--
-- 'allocationIds', 'describeAddressesAttribute_allocationIds' - [EC2-VPC] The allocation IDs.
--
-- 'attribute', 'describeAddressesAttribute_attribute' - The attribute of the IP address.
--
-- 'dryRun', 'describeAddressesAttribute_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'maxResults', 'describeAddressesAttribute_maxResults' - The maximum number of results to return with a single call. To retrieve
-- the remaining results, make another call with the returned @nextToken@
-- value.
--
-- 'nextToken', 'describeAddressesAttribute_nextToken' - The token for the next page of results.
newDescribeAddressesAttribute ::
  DescribeAddressesAttribute
newDescribeAddressesAttribute :: DescribeAddressesAttribute
newDescribeAddressesAttribute =
  DescribeAddressesAttribute'
    { $sel:allocationIds:DescribeAddressesAttribute' :: Maybe [Text]
allocationIds =
        forall a. Maybe a
Prelude.Nothing,
      $sel:attribute:DescribeAddressesAttribute' :: Maybe AddressAttributeName
attribute = forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:DescribeAddressesAttribute' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeAddressesAttribute' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeAddressesAttribute' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | [EC2-VPC] The allocation IDs.
describeAddressesAttribute_allocationIds :: Lens.Lens' DescribeAddressesAttribute (Prelude.Maybe [Prelude.Text])
describeAddressesAttribute_allocationIds :: Lens' DescribeAddressesAttribute (Maybe [Text])
describeAddressesAttribute_allocationIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddressesAttribute' {Maybe [Text]
allocationIds :: Maybe [Text]
$sel:allocationIds:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe [Text]
allocationIds} -> Maybe [Text]
allocationIds) (\s :: DescribeAddressesAttribute
s@DescribeAddressesAttribute' {} Maybe [Text]
a -> DescribeAddressesAttribute
s {$sel:allocationIds:DescribeAddressesAttribute' :: Maybe [Text]
allocationIds = Maybe [Text]
a} :: DescribeAddressesAttribute) 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 attribute of the IP address.
describeAddressesAttribute_attribute :: Lens.Lens' DescribeAddressesAttribute (Prelude.Maybe AddressAttributeName)
describeAddressesAttribute_attribute :: Lens' DescribeAddressesAttribute (Maybe AddressAttributeName)
describeAddressesAttribute_attribute = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddressesAttribute' {Maybe AddressAttributeName
attribute :: Maybe AddressAttributeName
$sel:attribute:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe AddressAttributeName
attribute} -> Maybe AddressAttributeName
attribute) (\s :: DescribeAddressesAttribute
s@DescribeAddressesAttribute' {} Maybe AddressAttributeName
a -> DescribeAddressesAttribute
s {$sel:attribute:DescribeAddressesAttribute' :: Maybe AddressAttributeName
attribute = Maybe AddressAttributeName
a} :: DescribeAddressesAttribute)

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
describeAddressesAttribute_dryRun :: Lens.Lens' DescribeAddressesAttribute (Prelude.Maybe Prelude.Bool)
describeAddressesAttribute_dryRun :: Lens' DescribeAddressesAttribute (Maybe Bool)
describeAddressesAttribute_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddressesAttribute' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: DescribeAddressesAttribute
s@DescribeAddressesAttribute' {} Maybe Bool
a -> DescribeAddressesAttribute
s {$sel:dryRun:DescribeAddressesAttribute' :: Maybe Bool
dryRun = Maybe Bool
a} :: DescribeAddressesAttribute)

-- | The maximum number of results to return with a single call. To retrieve
-- the remaining results, make another call with the returned @nextToken@
-- value.
describeAddressesAttribute_maxResults :: Lens.Lens' DescribeAddressesAttribute (Prelude.Maybe Prelude.Natural)
describeAddressesAttribute_maxResults :: Lens' DescribeAddressesAttribute (Maybe Natural)
describeAddressesAttribute_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddressesAttribute' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeAddressesAttribute
s@DescribeAddressesAttribute' {} Maybe Natural
a -> DescribeAddressesAttribute
s {$sel:maxResults:DescribeAddressesAttribute' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeAddressesAttribute)

-- | The token for the next page of results.
describeAddressesAttribute_nextToken :: Lens.Lens' DescribeAddressesAttribute (Prelude.Maybe Prelude.Text)
describeAddressesAttribute_nextToken :: Lens' DescribeAddressesAttribute (Maybe Text)
describeAddressesAttribute_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddressesAttribute' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeAddressesAttribute
s@DescribeAddressesAttribute' {} Maybe Text
a -> DescribeAddressesAttribute
s {$sel:nextToken:DescribeAddressesAttribute' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeAddressesAttribute)

instance Core.AWSPager DescribeAddressesAttribute where
  page :: DescribeAddressesAttribute
-> AWSResponse DescribeAddressesAttribute
-> Maybe DescribeAddressesAttribute
page DescribeAddressesAttribute
rq AWSResponse DescribeAddressesAttribute
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeAddressesAttribute
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeAddressesAttributeResponse (Maybe Text)
describeAddressesAttributeResponse_nextToken
            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 DescribeAddressesAttribute
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeAddressesAttributeResponse (Maybe [AddressAttribute])
describeAddressesAttributeResponse_addresses
            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.$ DescribeAddressesAttribute
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeAddressesAttribute (Maybe Text)
describeAddressesAttribute_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeAddressesAttribute
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeAddressesAttributeResponse (Maybe Text)
describeAddressesAttributeResponse_nextToken
          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 DescribeAddressesAttribute where
  type
    AWSResponse DescribeAddressesAttribute =
      DescribeAddressesAttributeResponse
  request :: (Service -> Service)
-> DescribeAddressesAttribute -> Request DescribeAddressesAttribute
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 DescribeAddressesAttribute
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeAddressesAttribute)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [AddressAttribute]
-> Maybe Text -> Int -> DescribeAddressesAttributeResponse
DescribeAddressesAttributeResponse'
            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
"addressSet"
                            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
"item")
                        )
            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
"nextToken")
            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 DescribeAddressesAttribute where
  hashWithSalt :: Int -> DescribeAddressesAttribute -> Int
hashWithSalt Int
_salt DescribeAddressesAttribute' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe AddressAttributeName
nextToken :: Maybe Text
maxResults :: Maybe Natural
dryRun :: Maybe Bool
attribute :: Maybe AddressAttributeName
allocationIds :: Maybe [Text]
$sel:nextToken:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Text
$sel:maxResults:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Natural
$sel:dryRun:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Bool
$sel:attribute:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe AddressAttributeName
$sel:allocationIds:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
allocationIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AddressAttributeName
attribute
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

instance Prelude.NFData DescribeAddressesAttribute where
  rnf :: DescribeAddressesAttribute -> ()
rnf DescribeAddressesAttribute' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe AddressAttributeName
nextToken :: Maybe Text
maxResults :: Maybe Natural
dryRun :: Maybe Bool
attribute :: Maybe AddressAttributeName
allocationIds :: Maybe [Text]
$sel:nextToken:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Text
$sel:maxResults:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Natural
$sel:dryRun:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Bool
$sel:attribute:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe AddressAttributeName
$sel:allocationIds:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
allocationIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AddressAttributeName
attribute
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken

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

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

instance Data.ToQuery DescribeAddressesAttribute where
  toQuery :: DescribeAddressesAttribute -> QueryString
toQuery DescribeAddressesAttribute' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe AddressAttributeName
nextToken :: Maybe Text
maxResults :: Maybe Natural
dryRun :: Maybe Bool
attribute :: Maybe AddressAttributeName
allocationIds :: Maybe [Text]
$sel:nextToken:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Text
$sel:maxResults:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Natural
$sel:dryRun:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe Bool
$sel:attribute:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe AddressAttributeName
$sel:allocationIds:DescribeAddressesAttribute' :: DescribeAddressesAttribute -> Maybe [Text]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DescribeAddressesAttribute" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"AllocationId"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
allocationIds
          ),
        ByteString
"Attribute" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe AddressAttributeName
attribute,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"MaxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken
      ]

-- | /See:/ 'newDescribeAddressesAttributeResponse' smart constructor.
data DescribeAddressesAttributeResponse = DescribeAddressesAttributeResponse'
  { -- | Information about the IP addresses.
    DescribeAddressesAttributeResponse -> Maybe [AddressAttribute]
addresses :: Prelude.Maybe [AddressAttribute],
    -- | The token to use to retrieve the next page of results. This value is
    -- @null@ when there are no more results to return.
    DescribeAddressesAttributeResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeAddressesAttributeResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeAddressesAttributeResponse
-> DescribeAddressesAttributeResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeAddressesAttributeResponse
-> DescribeAddressesAttributeResponse -> Bool
$c/= :: DescribeAddressesAttributeResponse
-> DescribeAddressesAttributeResponse -> Bool
== :: DescribeAddressesAttributeResponse
-> DescribeAddressesAttributeResponse -> Bool
$c== :: DescribeAddressesAttributeResponse
-> DescribeAddressesAttributeResponse -> Bool
Prelude.Eq, ReadPrec [DescribeAddressesAttributeResponse]
ReadPrec DescribeAddressesAttributeResponse
Int -> ReadS DescribeAddressesAttributeResponse
ReadS [DescribeAddressesAttributeResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeAddressesAttributeResponse]
$creadListPrec :: ReadPrec [DescribeAddressesAttributeResponse]
readPrec :: ReadPrec DescribeAddressesAttributeResponse
$creadPrec :: ReadPrec DescribeAddressesAttributeResponse
readList :: ReadS [DescribeAddressesAttributeResponse]
$creadList :: ReadS [DescribeAddressesAttributeResponse]
readsPrec :: Int -> ReadS DescribeAddressesAttributeResponse
$creadsPrec :: Int -> ReadS DescribeAddressesAttributeResponse
Prelude.Read, Int -> DescribeAddressesAttributeResponse -> ShowS
[DescribeAddressesAttributeResponse] -> ShowS
DescribeAddressesAttributeResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeAddressesAttributeResponse] -> ShowS
$cshowList :: [DescribeAddressesAttributeResponse] -> ShowS
show :: DescribeAddressesAttributeResponse -> String
$cshow :: DescribeAddressesAttributeResponse -> String
showsPrec :: Int -> DescribeAddressesAttributeResponse -> ShowS
$cshowsPrec :: Int -> DescribeAddressesAttributeResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeAddressesAttributeResponse x
-> DescribeAddressesAttributeResponse
forall x.
DescribeAddressesAttributeResponse
-> Rep DescribeAddressesAttributeResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeAddressesAttributeResponse x
-> DescribeAddressesAttributeResponse
$cfrom :: forall x.
DescribeAddressesAttributeResponse
-> Rep DescribeAddressesAttributeResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeAddressesAttributeResponse' 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:
--
-- 'addresses', 'describeAddressesAttributeResponse_addresses' - Information about the IP addresses.
--
-- 'nextToken', 'describeAddressesAttributeResponse_nextToken' - The token to use to retrieve the next page of results. This value is
-- @null@ when there are no more results to return.
--
-- 'httpStatus', 'describeAddressesAttributeResponse_httpStatus' - The response's http status code.
newDescribeAddressesAttributeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeAddressesAttributeResponse
newDescribeAddressesAttributeResponse :: Int -> DescribeAddressesAttributeResponse
newDescribeAddressesAttributeResponse Int
pHttpStatus_ =
  DescribeAddressesAttributeResponse'
    { $sel:addresses:DescribeAddressesAttributeResponse' :: Maybe [AddressAttribute]
addresses =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeAddressesAttributeResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeAddressesAttributeResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the IP addresses.
describeAddressesAttributeResponse_addresses :: Lens.Lens' DescribeAddressesAttributeResponse (Prelude.Maybe [AddressAttribute])
describeAddressesAttributeResponse_addresses :: Lens' DescribeAddressesAttributeResponse (Maybe [AddressAttribute])
describeAddressesAttributeResponse_addresses = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddressesAttributeResponse' {Maybe [AddressAttribute]
addresses :: Maybe [AddressAttribute]
$sel:addresses:DescribeAddressesAttributeResponse' :: DescribeAddressesAttributeResponse -> Maybe [AddressAttribute]
addresses} -> Maybe [AddressAttribute]
addresses) (\s :: DescribeAddressesAttributeResponse
s@DescribeAddressesAttributeResponse' {} Maybe [AddressAttribute]
a -> DescribeAddressesAttributeResponse
s {$sel:addresses:DescribeAddressesAttributeResponse' :: Maybe [AddressAttribute]
addresses = Maybe [AddressAttribute]
a} :: DescribeAddressesAttributeResponse) 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 token to use to retrieve the next page of results. This value is
-- @null@ when there are no more results to return.
describeAddressesAttributeResponse_nextToken :: Lens.Lens' DescribeAddressesAttributeResponse (Prelude.Maybe Prelude.Text)
describeAddressesAttributeResponse_nextToken :: Lens' DescribeAddressesAttributeResponse (Maybe Text)
describeAddressesAttributeResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAddressesAttributeResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeAddressesAttributeResponse' :: DescribeAddressesAttributeResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeAddressesAttributeResponse
s@DescribeAddressesAttributeResponse' {} Maybe Text
a -> DescribeAddressesAttributeResponse
s {$sel:nextToken:DescribeAddressesAttributeResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeAddressesAttributeResponse)

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

instance
  Prelude.NFData
    DescribeAddressesAttributeResponse
  where
  rnf :: DescribeAddressesAttributeResponse -> ()
rnf DescribeAddressesAttributeResponse' {Int
Maybe [AddressAttribute]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
addresses :: Maybe [AddressAttribute]
$sel:httpStatus:DescribeAddressesAttributeResponse' :: DescribeAddressesAttributeResponse -> Int
$sel:nextToken:DescribeAddressesAttributeResponse' :: DescribeAddressesAttributeResponse -> Maybe Text
$sel:addresses:DescribeAddressesAttributeResponse' :: DescribeAddressesAttributeResponse -> Maybe [AddressAttribute]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [AddressAttribute]
addresses
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus