{-# 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.DevOpsGuru.GetResourceCollection
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns lists AWS resources that are of the specified resource
-- collection type. The one type of AWS resource collection supported is
-- AWS CloudFormation stacks. DevOps Guru can be configured to analyze only
-- the AWS resources that are defined in the stacks. You can specify up to
-- 500 AWS CloudFormation stacks.
--
-- This operation returns paginated results.
module Amazonka.DevOpsGuru.GetResourceCollection
  ( -- * Creating a Request
    GetResourceCollection (..),
    newGetResourceCollection,

    -- * Request Lenses
    getResourceCollection_nextToken,
    getResourceCollection_resourceCollectionType,

    -- * Destructuring the Response
    GetResourceCollectionResponse (..),
    newGetResourceCollectionResponse,

    -- * Response Lenses
    getResourceCollectionResponse_resourceCollection,
    getResourceCollectionResponse_nextToken,
    getResourceCollectionResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import Amazonka.DevOpsGuru.Types
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newGetResourceCollection' smart constructor.
data GetResourceCollection = GetResourceCollection'
  { -- | The pagination token to use to retrieve the next page of results for
    -- this operation. If this value is null, it retrieves the first page.
    GetResourceCollection -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The type of AWS resource collections to return. The one valid value is
    -- @CLOUD_FORMATION@ for AWS CloudFormation stacks.
    GetResourceCollection -> ResourceCollectionType
resourceCollectionType :: ResourceCollectionType
  }
  deriving (GetResourceCollection -> GetResourceCollection -> Bool
(GetResourceCollection -> GetResourceCollection -> Bool)
-> (GetResourceCollection -> GetResourceCollection -> Bool)
-> Eq GetResourceCollection
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetResourceCollection -> GetResourceCollection -> Bool
$c/= :: GetResourceCollection -> GetResourceCollection -> Bool
== :: GetResourceCollection -> GetResourceCollection -> Bool
$c== :: GetResourceCollection -> GetResourceCollection -> Bool
Prelude.Eq, ReadPrec [GetResourceCollection]
ReadPrec GetResourceCollection
Int -> ReadS GetResourceCollection
ReadS [GetResourceCollection]
(Int -> ReadS GetResourceCollection)
-> ReadS [GetResourceCollection]
-> ReadPrec GetResourceCollection
-> ReadPrec [GetResourceCollection]
-> Read GetResourceCollection
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetResourceCollection]
$creadListPrec :: ReadPrec [GetResourceCollection]
readPrec :: ReadPrec GetResourceCollection
$creadPrec :: ReadPrec GetResourceCollection
readList :: ReadS [GetResourceCollection]
$creadList :: ReadS [GetResourceCollection]
readsPrec :: Int -> ReadS GetResourceCollection
$creadsPrec :: Int -> ReadS GetResourceCollection
Prelude.Read, Int -> GetResourceCollection -> ShowS
[GetResourceCollection] -> ShowS
GetResourceCollection -> String
(Int -> GetResourceCollection -> ShowS)
-> (GetResourceCollection -> String)
-> ([GetResourceCollection] -> ShowS)
-> Show GetResourceCollection
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetResourceCollection] -> ShowS
$cshowList :: [GetResourceCollection] -> ShowS
show :: GetResourceCollection -> String
$cshow :: GetResourceCollection -> String
showsPrec :: Int -> GetResourceCollection -> ShowS
$cshowsPrec :: Int -> GetResourceCollection -> ShowS
Prelude.Show, (forall x. GetResourceCollection -> Rep GetResourceCollection x)
-> (forall x. Rep GetResourceCollection x -> GetResourceCollection)
-> Generic GetResourceCollection
forall x. Rep GetResourceCollection x -> GetResourceCollection
forall x. GetResourceCollection -> Rep GetResourceCollection x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetResourceCollection x -> GetResourceCollection
$cfrom :: forall x. GetResourceCollection -> Rep GetResourceCollection x
Prelude.Generic)

-- |
-- Create a value of 'GetResourceCollection' 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:
--
-- 'nextToken', 'getResourceCollection_nextToken' - The pagination token to use to retrieve the next page of results for
-- this operation. If this value is null, it retrieves the first page.
--
-- 'resourceCollectionType', 'getResourceCollection_resourceCollectionType' - The type of AWS resource collections to return. The one valid value is
-- @CLOUD_FORMATION@ for AWS CloudFormation stacks.
newGetResourceCollection ::
  -- | 'resourceCollectionType'
  ResourceCollectionType ->
  GetResourceCollection
newGetResourceCollection :: ResourceCollectionType -> GetResourceCollection
newGetResourceCollection ResourceCollectionType
pResourceCollectionType_ =
  GetResourceCollection' :: Maybe Text -> ResourceCollectionType -> GetResourceCollection
GetResourceCollection'
    { $sel:nextToken:GetResourceCollection' :: Maybe Text
nextToken = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:resourceCollectionType:GetResourceCollection' :: ResourceCollectionType
resourceCollectionType = ResourceCollectionType
pResourceCollectionType_
    }

-- | The pagination token to use to retrieve the next page of results for
-- this operation. If this value is null, it retrieves the first page.
getResourceCollection_nextToken :: Lens.Lens' GetResourceCollection (Prelude.Maybe Prelude.Text)
getResourceCollection_nextToken :: (Maybe Text -> f (Maybe Text))
-> GetResourceCollection -> f GetResourceCollection
getResourceCollection_nextToken = (GetResourceCollection -> Maybe Text)
-> (GetResourceCollection -> Maybe Text -> GetResourceCollection)
-> Lens
     GetResourceCollection
     GetResourceCollection
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetResourceCollection' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetResourceCollection' :: GetResourceCollection -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetResourceCollection
s@GetResourceCollection' {} Maybe Text
a -> GetResourceCollection
s {$sel:nextToken:GetResourceCollection' :: Maybe Text
nextToken = Maybe Text
a} :: GetResourceCollection)

-- | The type of AWS resource collections to return. The one valid value is
-- @CLOUD_FORMATION@ for AWS CloudFormation stacks.
getResourceCollection_resourceCollectionType :: Lens.Lens' GetResourceCollection ResourceCollectionType
getResourceCollection_resourceCollectionType :: (ResourceCollectionType -> f ResourceCollectionType)
-> GetResourceCollection -> f GetResourceCollection
getResourceCollection_resourceCollectionType = (GetResourceCollection -> ResourceCollectionType)
-> (GetResourceCollection
    -> ResourceCollectionType -> GetResourceCollection)
-> Lens
     GetResourceCollection
     GetResourceCollection
     ResourceCollectionType
     ResourceCollectionType
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetResourceCollection' {ResourceCollectionType
resourceCollectionType :: ResourceCollectionType
$sel:resourceCollectionType:GetResourceCollection' :: GetResourceCollection -> ResourceCollectionType
resourceCollectionType} -> ResourceCollectionType
resourceCollectionType) (\s :: GetResourceCollection
s@GetResourceCollection' {} ResourceCollectionType
a -> GetResourceCollection
s {$sel:resourceCollectionType:GetResourceCollection' :: ResourceCollectionType
resourceCollectionType = ResourceCollectionType
a} :: GetResourceCollection)

instance Core.AWSPager GetResourceCollection where
  page :: GetResourceCollection
-> AWSResponse GetResourceCollection -> Maybe GetResourceCollection
page GetResourceCollection
rq AWSResponse GetResourceCollection
rs
    | Maybe Text -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetResourceCollection
GetResourceCollectionResponse
rs
            GetResourceCollectionResponse
-> Getting (First Text) GetResourceCollectionResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> GetResourceCollectionResponse
-> Const (First Text) GetResourceCollectionResponse
Lens' GetResourceCollectionResponse (Maybe Text)
getResourceCollectionResponse_nextToken
              ((Maybe Text -> Const (First Text) (Maybe Text))
 -> GetResourceCollectionResponse
 -> Const (First Text) GetResourceCollectionResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) GetResourceCollectionResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
      Maybe GetResourceCollection
forall a. Maybe a
Prelude.Nothing
    | Maybe [Text] -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetResourceCollection
GetResourceCollectionResponse
rs
            GetResourceCollectionResponse
-> Getting (First [Text]) GetResourceCollectionResponse [Text]
-> Maybe [Text]
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe ResourceCollectionFilter
 -> Const (First [Text]) (Maybe ResourceCollectionFilter))
-> GetResourceCollectionResponse
-> Const (First [Text]) GetResourceCollectionResponse
Lens'
  GetResourceCollectionResponse (Maybe ResourceCollectionFilter)
getResourceCollectionResponse_resourceCollection
              ((Maybe ResourceCollectionFilter
  -> Const (First [Text]) (Maybe ResourceCollectionFilter))
 -> GetResourceCollectionResponse
 -> Const (First [Text]) GetResourceCollectionResponse)
-> (([Text] -> Const (First [Text]) [Text])
    -> Maybe ResourceCollectionFilter
    -> Const (First [Text]) (Maybe ResourceCollectionFilter))
-> Getting (First [Text]) GetResourceCollectionResponse [Text]
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (ResourceCollectionFilter
 -> Const (First [Text]) ResourceCollectionFilter)
-> Maybe ResourceCollectionFilter
-> Const (First [Text]) (Maybe ResourceCollectionFilter)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
              ((ResourceCollectionFilter
  -> Const (First [Text]) ResourceCollectionFilter)
 -> Maybe ResourceCollectionFilter
 -> Const (First [Text]) (Maybe ResourceCollectionFilter))
-> (([Text] -> Const (First [Text]) [Text])
    -> ResourceCollectionFilter
    -> Const (First [Text]) ResourceCollectionFilter)
-> ([Text] -> Const (First [Text]) [Text])
-> Maybe ResourceCollectionFilter
-> Const (First [Text]) (Maybe ResourceCollectionFilter)
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Maybe CloudFormationCollectionFilter
 -> Const (First [Text]) (Maybe CloudFormationCollectionFilter))
-> ResourceCollectionFilter
-> Const (First [Text]) ResourceCollectionFilter
Lens'
  ResourceCollectionFilter (Maybe CloudFormationCollectionFilter)
resourceCollectionFilter_cloudFormation
              ((Maybe CloudFormationCollectionFilter
  -> Const (First [Text]) (Maybe CloudFormationCollectionFilter))
 -> ResourceCollectionFilter
 -> Const (First [Text]) ResourceCollectionFilter)
-> (([Text] -> Const (First [Text]) [Text])
    -> Maybe CloudFormationCollectionFilter
    -> Const (First [Text]) (Maybe CloudFormationCollectionFilter))
-> ([Text] -> Const (First [Text]) [Text])
-> ResourceCollectionFilter
-> Const (First [Text]) ResourceCollectionFilter
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (CloudFormationCollectionFilter
 -> Const (First [Text]) CloudFormationCollectionFilter)
-> Maybe CloudFormationCollectionFilter
-> Const (First [Text]) (Maybe CloudFormationCollectionFilter)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
              ((CloudFormationCollectionFilter
  -> Const (First [Text]) CloudFormationCollectionFilter)
 -> Maybe CloudFormationCollectionFilter
 -> Const (First [Text]) (Maybe CloudFormationCollectionFilter))
-> (([Text] -> Const (First [Text]) [Text])
    -> CloudFormationCollectionFilter
    -> Const (First [Text]) CloudFormationCollectionFilter)
-> ([Text] -> Const (First [Text]) [Text])
-> Maybe CloudFormationCollectionFilter
-> Const (First [Text]) (Maybe CloudFormationCollectionFilter)
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Maybe [Text] -> Const (First [Text]) (Maybe [Text]))
-> CloudFormationCollectionFilter
-> Const (First [Text]) CloudFormationCollectionFilter
Lens' CloudFormationCollectionFilter (Maybe [Text])
cloudFormationCollectionFilter_stackNames
              ((Maybe [Text] -> Const (First [Text]) (Maybe [Text]))
 -> CloudFormationCollectionFilter
 -> Const (First [Text]) CloudFormationCollectionFilter)
-> (([Text] -> Const (First [Text]) [Text])
    -> Maybe [Text] -> Const (First [Text]) (Maybe [Text]))
-> ([Text] -> Const (First [Text]) [Text])
-> CloudFormationCollectionFilter
-> Const (First [Text]) CloudFormationCollectionFilter
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. ([Text] -> Const (First [Text]) [Text])
-> Maybe [Text] -> Const (First [Text]) (Maybe [Text])
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
      Maybe GetResourceCollection
forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
      GetResourceCollection -> Maybe GetResourceCollection
forall a. a -> Maybe a
Prelude.Just (GetResourceCollection -> Maybe GetResourceCollection)
-> GetResourceCollection -> Maybe GetResourceCollection
forall a b. (a -> b) -> a -> b
Prelude.$
        GetResourceCollection
rq
          GetResourceCollection
-> (GetResourceCollection -> GetResourceCollection)
-> GetResourceCollection
forall a b. a -> (a -> b) -> b
Prelude.& (Maybe Text -> Identity (Maybe Text))
-> GetResourceCollection -> Identity GetResourceCollection
Lens
  GetResourceCollection
  GetResourceCollection
  (Maybe Text)
  (Maybe Text)
getResourceCollection_nextToken
          ((Maybe Text -> Identity (Maybe Text))
 -> GetResourceCollection -> Identity GetResourceCollection)
-> Maybe Text -> GetResourceCollection -> GetResourceCollection
forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse GetResourceCollection
GetResourceCollectionResponse
rs
          GetResourceCollectionResponse
-> Getting (First Text) GetResourceCollectionResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> GetResourceCollectionResponse
-> Const (First Text) GetResourceCollectionResponse
Lens' GetResourceCollectionResponse (Maybe Text)
getResourceCollectionResponse_nextToken
            ((Maybe Text -> Const (First Text) (Maybe Text))
 -> GetResourceCollectionResponse
 -> Const (First Text) GetResourceCollectionResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) GetResourceCollectionResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest GetResourceCollection where
  type
    AWSResponse GetResourceCollection =
      GetResourceCollectionResponse
  request :: GetResourceCollection -> Request GetResourceCollection
request = Service -> GetResourceCollection -> Request GetResourceCollection
forall a. ToRequest a => Service -> a -> Request a
Request.get Service
defaultService
  response :: Logger
-> Service
-> Proxy GetResourceCollection
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetResourceCollection)))
response =
    (Int
 -> ResponseHeaders
 -> Object
 -> Either String (AWSResponse GetResourceCollection))
-> Logger
-> Service
-> Proxy GetResourceCollection
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetResourceCollection)))
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe ResourceCollectionFilter
-> Maybe Text -> Int -> GetResourceCollectionResponse
GetResourceCollectionResponse'
            (Maybe ResourceCollectionFilter
 -> Maybe Text -> Int -> GetResourceCollectionResponse)
-> Either String (Maybe ResourceCollectionFilter)
-> Either
     String (Maybe Text -> Int -> GetResourceCollectionResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Either String (Maybe ResourceCollectionFilter)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"ResourceCollection")
            Either String (Maybe Text -> Int -> GetResourceCollectionResponse)
-> Either String (Maybe Text)
-> Either String (Int -> GetResourceCollectionResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"NextToken")
            Either String (Int -> GetResourceCollectionResponse)
-> Either String Int -> Either String GetResourceCollectionResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
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 GetResourceCollection

instance Prelude.NFData GetResourceCollection

instance Core.ToHeaders GetResourceCollection where
  toHeaders :: GetResourceCollection -> ResponseHeaders
toHeaders =
    ResponseHeaders -> GetResourceCollection -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const
      ( [ResponseHeaders] -> ResponseHeaders
forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              HeaderName -> ByteString -> ResponseHeaders
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Core.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Core.ToPath GetResourceCollection where
  toPath :: GetResourceCollection -> ByteString
toPath GetResourceCollection' {Maybe Text
ResourceCollectionType
resourceCollectionType :: ResourceCollectionType
nextToken :: Maybe Text
$sel:resourceCollectionType:GetResourceCollection' :: GetResourceCollection -> ResourceCollectionType
$sel:nextToken:GetResourceCollection' :: GetResourceCollection -> Maybe Text
..} =
    [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/resource-collections/",
        ResourceCollectionType -> ByteString
forall a. ToByteString a => a -> ByteString
Core.toBS ResourceCollectionType
resourceCollectionType
      ]

instance Core.ToQuery GetResourceCollection where
  toQuery :: GetResourceCollection -> QueryString
toQuery GetResourceCollection' {Maybe Text
ResourceCollectionType
resourceCollectionType :: ResourceCollectionType
nextToken :: Maybe Text
$sel:resourceCollectionType:GetResourceCollection' :: GetResourceCollection -> ResourceCollectionType
$sel:nextToken:GetResourceCollection' :: GetResourceCollection -> Maybe Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"NextToken" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
nextToken]

-- | /See:/ 'newGetResourceCollectionResponse' smart constructor.
data GetResourceCollectionResponse = GetResourceCollectionResponse'
  { -- | The requested list of AWS resource collections. The one type of AWS
    -- resource collection supported is AWS CloudFormation stacks. DevOps Guru
    -- can be configured to analyze only the AWS resources that are defined in
    -- the stacks. You can specify up to 500 AWS CloudFormation stacks.
    GetResourceCollectionResponse -> Maybe ResourceCollectionFilter
resourceCollection :: Prelude.Maybe ResourceCollectionFilter,
    -- | The pagination token to use to retrieve the next page of results for
    -- this operation. If there are no more pages, this value is null.
    GetResourceCollectionResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetResourceCollectionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetResourceCollectionResponse
-> GetResourceCollectionResponse -> Bool
(GetResourceCollectionResponse
 -> GetResourceCollectionResponse -> Bool)
-> (GetResourceCollectionResponse
    -> GetResourceCollectionResponse -> Bool)
-> Eq GetResourceCollectionResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetResourceCollectionResponse
-> GetResourceCollectionResponse -> Bool
$c/= :: GetResourceCollectionResponse
-> GetResourceCollectionResponse -> Bool
== :: GetResourceCollectionResponse
-> GetResourceCollectionResponse -> Bool
$c== :: GetResourceCollectionResponse
-> GetResourceCollectionResponse -> Bool
Prelude.Eq, ReadPrec [GetResourceCollectionResponse]
ReadPrec GetResourceCollectionResponse
Int -> ReadS GetResourceCollectionResponse
ReadS [GetResourceCollectionResponse]
(Int -> ReadS GetResourceCollectionResponse)
-> ReadS [GetResourceCollectionResponse]
-> ReadPrec GetResourceCollectionResponse
-> ReadPrec [GetResourceCollectionResponse]
-> Read GetResourceCollectionResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetResourceCollectionResponse]
$creadListPrec :: ReadPrec [GetResourceCollectionResponse]
readPrec :: ReadPrec GetResourceCollectionResponse
$creadPrec :: ReadPrec GetResourceCollectionResponse
readList :: ReadS [GetResourceCollectionResponse]
$creadList :: ReadS [GetResourceCollectionResponse]
readsPrec :: Int -> ReadS GetResourceCollectionResponse
$creadsPrec :: Int -> ReadS GetResourceCollectionResponse
Prelude.Read, Int -> GetResourceCollectionResponse -> ShowS
[GetResourceCollectionResponse] -> ShowS
GetResourceCollectionResponse -> String
(Int -> GetResourceCollectionResponse -> ShowS)
-> (GetResourceCollectionResponse -> String)
-> ([GetResourceCollectionResponse] -> ShowS)
-> Show GetResourceCollectionResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetResourceCollectionResponse] -> ShowS
$cshowList :: [GetResourceCollectionResponse] -> ShowS
show :: GetResourceCollectionResponse -> String
$cshow :: GetResourceCollectionResponse -> String
showsPrec :: Int -> GetResourceCollectionResponse -> ShowS
$cshowsPrec :: Int -> GetResourceCollectionResponse -> ShowS
Prelude.Show, (forall x.
 GetResourceCollectionResponse
 -> Rep GetResourceCollectionResponse x)
-> (forall x.
    Rep GetResourceCollectionResponse x
    -> GetResourceCollectionResponse)
-> Generic GetResourceCollectionResponse
forall x.
Rep GetResourceCollectionResponse x
-> GetResourceCollectionResponse
forall x.
GetResourceCollectionResponse
-> Rep GetResourceCollectionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetResourceCollectionResponse x
-> GetResourceCollectionResponse
$cfrom :: forall x.
GetResourceCollectionResponse
-> Rep GetResourceCollectionResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetResourceCollectionResponse' 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:
--
-- 'resourceCollection', 'getResourceCollectionResponse_resourceCollection' - The requested list of AWS resource collections. The one type of AWS
-- resource collection supported is AWS CloudFormation stacks. DevOps Guru
-- can be configured to analyze only the AWS resources that are defined in
-- the stacks. You can specify up to 500 AWS CloudFormation stacks.
--
-- 'nextToken', 'getResourceCollectionResponse_nextToken' - The pagination token to use to retrieve the next page of results for
-- this operation. If there are no more pages, this value is null.
--
-- 'httpStatus', 'getResourceCollectionResponse_httpStatus' - The response's http status code.
newGetResourceCollectionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetResourceCollectionResponse
newGetResourceCollectionResponse :: Int -> GetResourceCollectionResponse
newGetResourceCollectionResponse Int
pHttpStatus_ =
  GetResourceCollectionResponse' :: Maybe ResourceCollectionFilter
-> Maybe Text -> Int -> GetResourceCollectionResponse
GetResourceCollectionResponse'
    { $sel:resourceCollection:GetResourceCollectionResponse' :: Maybe ResourceCollectionFilter
resourceCollection =
        Maybe ResourceCollectionFilter
forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:GetResourceCollectionResponse' :: Maybe Text
nextToken = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetResourceCollectionResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The requested list of AWS resource collections. The one type of AWS
-- resource collection supported is AWS CloudFormation stacks. DevOps Guru
-- can be configured to analyze only the AWS resources that are defined in
-- the stacks. You can specify up to 500 AWS CloudFormation stacks.
getResourceCollectionResponse_resourceCollection :: Lens.Lens' GetResourceCollectionResponse (Prelude.Maybe ResourceCollectionFilter)
getResourceCollectionResponse_resourceCollection :: (Maybe ResourceCollectionFilter
 -> f (Maybe ResourceCollectionFilter))
-> GetResourceCollectionResponse -> f GetResourceCollectionResponse
getResourceCollectionResponse_resourceCollection = (GetResourceCollectionResponse -> Maybe ResourceCollectionFilter)
-> (GetResourceCollectionResponse
    -> Maybe ResourceCollectionFilter -> GetResourceCollectionResponse)
-> Lens'
     GetResourceCollectionResponse (Maybe ResourceCollectionFilter)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetResourceCollectionResponse' {Maybe ResourceCollectionFilter
resourceCollection :: Maybe ResourceCollectionFilter
$sel:resourceCollection:GetResourceCollectionResponse' :: GetResourceCollectionResponse -> Maybe ResourceCollectionFilter
resourceCollection} -> Maybe ResourceCollectionFilter
resourceCollection) (\s :: GetResourceCollectionResponse
s@GetResourceCollectionResponse' {} Maybe ResourceCollectionFilter
a -> GetResourceCollectionResponse
s {$sel:resourceCollection:GetResourceCollectionResponse' :: Maybe ResourceCollectionFilter
resourceCollection = Maybe ResourceCollectionFilter
a} :: GetResourceCollectionResponse)

-- | The pagination token to use to retrieve the next page of results for
-- this operation. If there are no more pages, this value is null.
getResourceCollectionResponse_nextToken :: Lens.Lens' GetResourceCollectionResponse (Prelude.Maybe Prelude.Text)
getResourceCollectionResponse_nextToken :: (Maybe Text -> f (Maybe Text))
-> GetResourceCollectionResponse -> f GetResourceCollectionResponse
getResourceCollectionResponse_nextToken = (GetResourceCollectionResponse -> Maybe Text)
-> (GetResourceCollectionResponse
    -> Maybe Text -> GetResourceCollectionResponse)
-> Lens' GetResourceCollectionResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetResourceCollectionResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetResourceCollectionResponse' :: GetResourceCollectionResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetResourceCollectionResponse
s@GetResourceCollectionResponse' {} Maybe Text
a -> GetResourceCollectionResponse
s {$sel:nextToken:GetResourceCollectionResponse' :: Maybe Text
nextToken = Maybe Text
a} :: GetResourceCollectionResponse)

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

instance Prelude.NFData GetResourceCollectionResponse