{-# 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.GetIpamResourceCidrs
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Get information about the resources in a scope.
--
-- This operation returns paginated results.
module Amazonka.EC2.GetIpamResourceCidrs
  ( -- * Creating a Request
    GetIpamResourceCidrs (..),
    newGetIpamResourceCidrs,

    -- * Request Lenses
    getIpamResourceCidrs_dryRun,
    getIpamResourceCidrs_filters,
    getIpamResourceCidrs_ipamPoolId,
    getIpamResourceCidrs_maxResults,
    getIpamResourceCidrs_nextToken,
    getIpamResourceCidrs_resourceId,
    getIpamResourceCidrs_resourceOwner,
    getIpamResourceCidrs_resourceTag,
    getIpamResourceCidrs_resourceType,
    getIpamResourceCidrs_ipamScopeId,

    -- * Destructuring the Response
    GetIpamResourceCidrsResponse (..),
    newGetIpamResourceCidrsResponse,

    -- * Response Lenses
    getIpamResourceCidrsResponse_ipamResourceCidrs,
    getIpamResourceCidrsResponse_nextToken,
    getIpamResourceCidrsResponse_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:/ 'newGetIpamResourceCidrs' smart constructor.
data GetIpamResourceCidrs = GetIpamResourceCidrs'
  { -- | A check for 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@.
    GetIpamResourceCidrs -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | One or more filters for the request. For more information about
    -- filtering, see
    -- <https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html Filtering CLI output>.
    GetIpamResourceCidrs -> Maybe [Filter]
filters :: Prelude.Maybe [Filter],
    -- | The ID of the IPAM pool that the resource is in.
    GetIpamResourceCidrs -> Maybe Text
ipamPoolId :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of results to return in the request.
    GetIpamResourceCidrs -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token for the next page of results.
    GetIpamResourceCidrs -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The ID of the resource.
    GetIpamResourceCidrs -> Maybe Text
resourceId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Amazon Web Services account that owns the resource.
    GetIpamResourceCidrs -> Maybe Text
resourceOwner :: Prelude.Maybe Prelude.Text,
    -- | The resource tag.
    GetIpamResourceCidrs -> Maybe RequestIpamResourceTag
resourceTag :: Prelude.Maybe RequestIpamResourceTag,
    -- | The resource type.
    GetIpamResourceCidrs -> Maybe IpamResourceType
resourceType :: Prelude.Maybe IpamResourceType,
    -- | The ID of the scope that the resource is in.
    GetIpamResourceCidrs -> Text
ipamScopeId :: Prelude.Text
  }
  deriving (GetIpamResourceCidrs -> GetIpamResourceCidrs -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetIpamResourceCidrs -> GetIpamResourceCidrs -> Bool
$c/= :: GetIpamResourceCidrs -> GetIpamResourceCidrs -> Bool
== :: GetIpamResourceCidrs -> GetIpamResourceCidrs -> Bool
$c== :: GetIpamResourceCidrs -> GetIpamResourceCidrs -> Bool
Prelude.Eq, ReadPrec [GetIpamResourceCidrs]
ReadPrec GetIpamResourceCidrs
Int -> ReadS GetIpamResourceCidrs
ReadS [GetIpamResourceCidrs]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetIpamResourceCidrs]
$creadListPrec :: ReadPrec [GetIpamResourceCidrs]
readPrec :: ReadPrec GetIpamResourceCidrs
$creadPrec :: ReadPrec GetIpamResourceCidrs
readList :: ReadS [GetIpamResourceCidrs]
$creadList :: ReadS [GetIpamResourceCidrs]
readsPrec :: Int -> ReadS GetIpamResourceCidrs
$creadsPrec :: Int -> ReadS GetIpamResourceCidrs
Prelude.Read, Int -> GetIpamResourceCidrs -> ShowS
[GetIpamResourceCidrs] -> ShowS
GetIpamResourceCidrs -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetIpamResourceCidrs] -> ShowS
$cshowList :: [GetIpamResourceCidrs] -> ShowS
show :: GetIpamResourceCidrs -> String
$cshow :: GetIpamResourceCidrs -> String
showsPrec :: Int -> GetIpamResourceCidrs -> ShowS
$cshowsPrec :: Int -> GetIpamResourceCidrs -> ShowS
Prelude.Show, forall x. Rep GetIpamResourceCidrs x -> GetIpamResourceCidrs
forall x. GetIpamResourceCidrs -> Rep GetIpamResourceCidrs x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetIpamResourceCidrs x -> GetIpamResourceCidrs
$cfrom :: forall x. GetIpamResourceCidrs -> Rep GetIpamResourceCidrs x
Prelude.Generic)

-- |
-- Create a value of 'GetIpamResourceCidrs' 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:
--
-- 'dryRun', 'getIpamResourceCidrs_dryRun' - A check for 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@.
--
-- 'filters', 'getIpamResourceCidrs_filters' - One or more filters for the request. For more information about
-- filtering, see
-- <https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html Filtering CLI output>.
--
-- 'ipamPoolId', 'getIpamResourceCidrs_ipamPoolId' - The ID of the IPAM pool that the resource is in.
--
-- 'maxResults', 'getIpamResourceCidrs_maxResults' - The maximum number of results to return in the request.
--
-- 'nextToken', 'getIpamResourceCidrs_nextToken' - The token for the next page of results.
--
-- 'resourceId', 'getIpamResourceCidrs_resourceId' - The ID of the resource.
--
-- 'resourceOwner', 'getIpamResourceCidrs_resourceOwner' - The ID of the Amazon Web Services account that owns the resource.
--
-- 'resourceTag', 'getIpamResourceCidrs_resourceTag' - The resource tag.
--
-- 'resourceType', 'getIpamResourceCidrs_resourceType' - The resource type.
--
-- 'ipamScopeId', 'getIpamResourceCidrs_ipamScopeId' - The ID of the scope that the resource is in.
newGetIpamResourceCidrs ::
  -- | 'ipamScopeId'
  Prelude.Text ->
  GetIpamResourceCidrs
newGetIpamResourceCidrs :: Text -> GetIpamResourceCidrs
newGetIpamResourceCidrs Text
pIpamScopeId_ =
  GetIpamResourceCidrs'
    { $sel:dryRun:GetIpamResourceCidrs' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:filters:GetIpamResourceCidrs' :: Maybe [Filter]
filters = forall a. Maybe a
Prelude.Nothing,
      $sel:ipamPoolId:GetIpamResourceCidrs' :: Maybe Text
ipamPoolId = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:GetIpamResourceCidrs' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:GetIpamResourceCidrs' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceId:GetIpamResourceCidrs' :: Maybe Text
resourceId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceOwner:GetIpamResourceCidrs' :: Maybe Text
resourceOwner = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceTag:GetIpamResourceCidrs' :: Maybe RequestIpamResourceTag
resourceTag = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceType:GetIpamResourceCidrs' :: Maybe IpamResourceType
resourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:ipamScopeId:GetIpamResourceCidrs' :: Text
ipamScopeId = Text
pIpamScopeId_
    }

-- | A check for 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@.
getIpamResourceCidrs_dryRun :: Lens.Lens' GetIpamResourceCidrs (Prelude.Maybe Prelude.Bool)
getIpamResourceCidrs_dryRun :: Lens' GetIpamResourceCidrs (Maybe Bool)
getIpamResourceCidrs_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Maybe Bool
a -> GetIpamResourceCidrs
s {$sel:dryRun:GetIpamResourceCidrs' :: Maybe Bool
dryRun = Maybe Bool
a} :: GetIpamResourceCidrs)

-- | One or more filters for the request. For more information about
-- filtering, see
-- <https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html Filtering CLI output>.
getIpamResourceCidrs_filters :: Lens.Lens' GetIpamResourceCidrs (Prelude.Maybe [Filter])
getIpamResourceCidrs_filters :: Lens' GetIpamResourceCidrs (Maybe [Filter])
getIpamResourceCidrs_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Maybe [Filter]
filters :: Maybe [Filter]
$sel:filters:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe [Filter]
filters} -> Maybe [Filter]
filters) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Maybe [Filter]
a -> GetIpamResourceCidrs
s {$sel:filters:GetIpamResourceCidrs' :: Maybe [Filter]
filters = Maybe [Filter]
a} :: GetIpamResourceCidrs) 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 ID of the IPAM pool that the resource is in.
getIpamResourceCidrs_ipamPoolId :: Lens.Lens' GetIpamResourceCidrs (Prelude.Maybe Prelude.Text)
getIpamResourceCidrs_ipamPoolId :: Lens' GetIpamResourceCidrs (Maybe Text)
getIpamResourceCidrs_ipamPoolId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Maybe Text
ipamPoolId :: Maybe Text
$sel:ipamPoolId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
ipamPoolId} -> Maybe Text
ipamPoolId) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Maybe Text
a -> GetIpamResourceCidrs
s {$sel:ipamPoolId:GetIpamResourceCidrs' :: Maybe Text
ipamPoolId = Maybe Text
a} :: GetIpamResourceCidrs)

-- | The maximum number of results to return in the request.
getIpamResourceCidrs_maxResults :: Lens.Lens' GetIpamResourceCidrs (Prelude.Maybe Prelude.Natural)
getIpamResourceCidrs_maxResults :: Lens' GetIpamResourceCidrs (Maybe Natural)
getIpamResourceCidrs_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Maybe Natural
a -> GetIpamResourceCidrs
s {$sel:maxResults:GetIpamResourceCidrs' :: Maybe Natural
maxResults = Maybe Natural
a} :: GetIpamResourceCidrs)

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

-- | The ID of the resource.
getIpamResourceCidrs_resourceId :: Lens.Lens' GetIpamResourceCidrs (Prelude.Maybe Prelude.Text)
getIpamResourceCidrs_resourceId :: Lens' GetIpamResourceCidrs (Maybe Text)
getIpamResourceCidrs_resourceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Maybe Text
resourceId :: Maybe Text
$sel:resourceId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
resourceId} -> Maybe Text
resourceId) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Maybe Text
a -> GetIpamResourceCidrs
s {$sel:resourceId:GetIpamResourceCidrs' :: Maybe Text
resourceId = Maybe Text
a} :: GetIpamResourceCidrs)

-- | The ID of the Amazon Web Services account that owns the resource.
getIpamResourceCidrs_resourceOwner :: Lens.Lens' GetIpamResourceCidrs (Prelude.Maybe Prelude.Text)
getIpamResourceCidrs_resourceOwner :: Lens' GetIpamResourceCidrs (Maybe Text)
getIpamResourceCidrs_resourceOwner = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Maybe Text
resourceOwner :: Maybe Text
$sel:resourceOwner:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
resourceOwner} -> Maybe Text
resourceOwner) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Maybe Text
a -> GetIpamResourceCidrs
s {$sel:resourceOwner:GetIpamResourceCidrs' :: Maybe Text
resourceOwner = Maybe Text
a} :: GetIpamResourceCidrs)

-- | The resource tag.
getIpamResourceCidrs_resourceTag :: Lens.Lens' GetIpamResourceCidrs (Prelude.Maybe RequestIpamResourceTag)
getIpamResourceCidrs_resourceTag :: Lens' GetIpamResourceCidrs (Maybe RequestIpamResourceTag)
getIpamResourceCidrs_resourceTag = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Maybe RequestIpamResourceTag
resourceTag :: Maybe RequestIpamResourceTag
$sel:resourceTag:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe RequestIpamResourceTag
resourceTag} -> Maybe RequestIpamResourceTag
resourceTag) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Maybe RequestIpamResourceTag
a -> GetIpamResourceCidrs
s {$sel:resourceTag:GetIpamResourceCidrs' :: Maybe RequestIpamResourceTag
resourceTag = Maybe RequestIpamResourceTag
a} :: GetIpamResourceCidrs)

-- | The resource type.
getIpamResourceCidrs_resourceType :: Lens.Lens' GetIpamResourceCidrs (Prelude.Maybe IpamResourceType)
getIpamResourceCidrs_resourceType :: Lens' GetIpamResourceCidrs (Maybe IpamResourceType)
getIpamResourceCidrs_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Maybe IpamResourceType
resourceType :: Maybe IpamResourceType
$sel:resourceType:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe IpamResourceType
resourceType} -> Maybe IpamResourceType
resourceType) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Maybe IpamResourceType
a -> GetIpamResourceCidrs
s {$sel:resourceType:GetIpamResourceCidrs' :: Maybe IpamResourceType
resourceType = Maybe IpamResourceType
a} :: GetIpamResourceCidrs)

-- | The ID of the scope that the resource is in.
getIpamResourceCidrs_ipamScopeId :: Lens.Lens' GetIpamResourceCidrs Prelude.Text
getIpamResourceCidrs_ipamScopeId :: Lens' GetIpamResourceCidrs Text
getIpamResourceCidrs_ipamScopeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrs' {Text
ipamScopeId :: Text
$sel:ipamScopeId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Text
ipamScopeId} -> Text
ipamScopeId) (\s :: GetIpamResourceCidrs
s@GetIpamResourceCidrs' {} Text
a -> GetIpamResourceCidrs
s {$sel:ipamScopeId:GetIpamResourceCidrs' :: Text
ipamScopeId = Text
a} :: GetIpamResourceCidrs)

instance Core.AWSPager GetIpamResourceCidrs where
  page :: GetIpamResourceCidrs
-> AWSResponse GetIpamResourceCidrs -> Maybe GetIpamResourceCidrs
page GetIpamResourceCidrs
rq AWSResponse GetIpamResourceCidrs
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetIpamResourceCidrs
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetIpamResourceCidrsResponse (Maybe Text)
getIpamResourceCidrsResponse_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 GetIpamResourceCidrs
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetIpamResourceCidrsResponse (Maybe [IpamResourceCidr])
getIpamResourceCidrsResponse_ipamResourceCidrs
            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.$ GetIpamResourceCidrs
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' GetIpamResourceCidrs (Maybe Text)
getIpamResourceCidrs_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse GetIpamResourceCidrs
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetIpamResourceCidrsResponse (Maybe Text)
getIpamResourceCidrsResponse_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 GetIpamResourceCidrs where
  type
    AWSResponse GetIpamResourceCidrs =
      GetIpamResourceCidrsResponse
  request :: (Service -> Service)
-> GetIpamResourceCidrs -> Request GetIpamResourceCidrs
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 GetIpamResourceCidrs
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetIpamResourceCidrs)))
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 [IpamResourceCidr]
-> Maybe Text -> Int -> GetIpamResourceCidrsResponse
GetIpamResourceCidrsResponse'
            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
"ipamResourceCidrSet"
                            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 GetIpamResourceCidrs where
  hashWithSalt :: Int -> GetIpamResourceCidrs -> Int
hashWithSalt Int
_salt GetIpamResourceCidrs' {Maybe Bool
Maybe Natural
Maybe [Filter]
Maybe Text
Maybe IpamResourceType
Maybe RequestIpamResourceTag
Text
ipamScopeId :: Text
resourceType :: Maybe IpamResourceType
resourceTag :: Maybe RequestIpamResourceTag
resourceOwner :: Maybe Text
resourceId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
ipamPoolId :: Maybe Text
filters :: Maybe [Filter]
dryRun :: Maybe Bool
$sel:ipamScopeId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Text
$sel:resourceType:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe IpamResourceType
$sel:resourceTag:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe RequestIpamResourceTag
$sel:resourceOwner:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:resourceId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:nextToken:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:maxResults:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Natural
$sel:ipamPoolId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:filters:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe [Filter]
$sel:dryRun:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Filter]
filters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ipamPoolId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceOwner
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RequestIpamResourceTag
resourceTag
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IpamResourceType
resourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
ipamScopeId

instance Prelude.NFData GetIpamResourceCidrs where
  rnf :: GetIpamResourceCidrs -> ()
rnf GetIpamResourceCidrs' {Maybe Bool
Maybe Natural
Maybe [Filter]
Maybe Text
Maybe IpamResourceType
Maybe RequestIpamResourceTag
Text
ipamScopeId :: Text
resourceType :: Maybe IpamResourceType
resourceTag :: Maybe RequestIpamResourceTag
resourceOwner :: Maybe Text
resourceId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
ipamPoolId :: Maybe Text
filters :: Maybe [Filter]
dryRun :: Maybe Bool
$sel:ipamScopeId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Text
$sel:resourceType:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe IpamResourceType
$sel:resourceTag:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe RequestIpamResourceTag
$sel:resourceOwner:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:resourceId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:nextToken:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:maxResults:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Natural
$sel:ipamPoolId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:filters:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe [Filter]
$sel:dryRun:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Bool
..} =
    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 [Filter]
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ipamPoolId
      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
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceOwner
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RequestIpamResourceTag
resourceTag
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IpamResourceType
resourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
ipamScopeId

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

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

instance Data.ToQuery GetIpamResourceCidrs where
  toQuery :: GetIpamResourceCidrs -> QueryString
toQuery GetIpamResourceCidrs' {Maybe Bool
Maybe Natural
Maybe [Filter]
Maybe Text
Maybe IpamResourceType
Maybe RequestIpamResourceTag
Text
ipamScopeId :: Text
resourceType :: Maybe IpamResourceType
resourceTag :: Maybe RequestIpamResourceTag
resourceOwner :: Maybe Text
resourceId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
ipamPoolId :: Maybe Text
filters :: Maybe [Filter]
dryRun :: Maybe Bool
$sel:ipamScopeId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Text
$sel:resourceType:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe IpamResourceType
$sel:resourceTag:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe RequestIpamResourceTag
$sel:resourceOwner:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:resourceId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:nextToken:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:maxResults:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Natural
$sel:ipamPoolId:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Text
$sel:filters:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe [Filter]
$sel:dryRun:GetIpamResourceCidrs' :: GetIpamResourceCidrs -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"GetIpamResourceCidrs" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"Filter" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Filter]
filters),
        ByteString
"IpamPoolId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
ipamPoolId,
        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,
        ByteString
"ResourceId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
resourceId,
        ByteString
"ResourceOwner" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
resourceOwner,
        ByteString
"ResourceTag" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe RequestIpamResourceTag
resourceTag,
        ByteString
"ResourceType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe IpamResourceType
resourceType,
        ByteString
"IpamScopeId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
ipamScopeId
      ]

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

-- |
-- Create a value of 'GetIpamResourceCidrsResponse' 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:
--
-- 'ipamResourceCidrs', 'getIpamResourceCidrsResponse_ipamResourceCidrs' - The resource CIDRs.
--
-- 'nextToken', 'getIpamResourceCidrsResponse_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', 'getIpamResourceCidrsResponse_httpStatus' - The response's http status code.
newGetIpamResourceCidrsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetIpamResourceCidrsResponse
newGetIpamResourceCidrsResponse :: Int -> GetIpamResourceCidrsResponse
newGetIpamResourceCidrsResponse Int
pHttpStatus_ =
  GetIpamResourceCidrsResponse'
    { $sel:ipamResourceCidrs:GetIpamResourceCidrsResponse' :: Maybe [IpamResourceCidr]
ipamResourceCidrs =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:GetIpamResourceCidrsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetIpamResourceCidrsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The resource CIDRs.
getIpamResourceCidrsResponse_ipamResourceCidrs :: Lens.Lens' GetIpamResourceCidrsResponse (Prelude.Maybe [IpamResourceCidr])
getIpamResourceCidrsResponse_ipamResourceCidrs :: Lens' GetIpamResourceCidrsResponse (Maybe [IpamResourceCidr])
getIpamResourceCidrsResponse_ipamResourceCidrs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrsResponse' {Maybe [IpamResourceCidr]
ipamResourceCidrs :: Maybe [IpamResourceCidr]
$sel:ipamResourceCidrs:GetIpamResourceCidrsResponse' :: GetIpamResourceCidrsResponse -> Maybe [IpamResourceCidr]
ipamResourceCidrs} -> Maybe [IpamResourceCidr]
ipamResourceCidrs) (\s :: GetIpamResourceCidrsResponse
s@GetIpamResourceCidrsResponse' {} Maybe [IpamResourceCidr]
a -> GetIpamResourceCidrsResponse
s {$sel:ipamResourceCidrs:GetIpamResourceCidrsResponse' :: Maybe [IpamResourceCidr]
ipamResourceCidrs = Maybe [IpamResourceCidr]
a} :: GetIpamResourceCidrsResponse) 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.
getIpamResourceCidrsResponse_nextToken :: Lens.Lens' GetIpamResourceCidrsResponse (Prelude.Maybe Prelude.Text)
getIpamResourceCidrsResponse_nextToken :: Lens' GetIpamResourceCidrsResponse (Maybe Text)
getIpamResourceCidrsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIpamResourceCidrsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetIpamResourceCidrsResponse' :: GetIpamResourceCidrsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetIpamResourceCidrsResponse
s@GetIpamResourceCidrsResponse' {} Maybe Text
a -> GetIpamResourceCidrsResponse
s {$sel:nextToken:GetIpamResourceCidrsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: GetIpamResourceCidrsResponse)

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

instance Prelude.NFData GetIpamResourceCidrsResponse where
  rnf :: GetIpamResourceCidrsResponse -> ()
rnf GetIpamResourceCidrsResponse' {Int
Maybe [IpamResourceCidr]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
ipamResourceCidrs :: Maybe [IpamResourceCidr]
$sel:httpStatus:GetIpamResourceCidrsResponse' :: GetIpamResourceCidrsResponse -> Int
$sel:nextToken:GetIpamResourceCidrsResponse' :: GetIpamResourceCidrsResponse -> Maybe Text
$sel:ipamResourceCidrs:GetIpamResourceCidrsResponse' :: GetIpamResourceCidrsResponse -> Maybe [IpamResourceCidr]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [IpamResourceCidr]
ipamResourceCidrs
      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