{-# 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.ArcZonalShift.ListManagedResources
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists all the resources in your AWS account in this AWS Region that are
-- managed for zonal shifts in Amazon Route 53 Application Recovery
-- Controller, and information about them. The information includes their
-- Amazon Resource Names (ARNs), the Availability Zones the resources are
-- deployed in, and the resource name.
--
-- This operation returns paginated results.
module Amazonka.ArcZonalShift.ListManagedResources
  ( -- * Creating a Request
    ListManagedResources (..),
    newListManagedResources,

    -- * Request Lenses
    listManagedResources_maxResults,
    listManagedResources_nextToken,

    -- * Destructuring the Response
    ListManagedResourcesResponse (..),
    newListManagedResourcesResponse,

    -- * Response Lenses
    listManagedResourcesResponse_nextToken,
    listManagedResourcesResponse_httpStatus,
    listManagedResourcesResponse_items,
  )
where

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

-- | /See:/ 'newListManagedResources' smart constructor.
data ListManagedResources = ListManagedResources'
  { -- | The number of objects that you want to return with this call.
    ListManagedResources -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | Specifies that you want to receive the next page of results. Valid only
    -- if you received a @NextToken@ response in the previous request. If you
    -- did, it indicates that more output is available. Set this parameter to
    -- the value provided by the previous call\'s @NextToken@ response to
    -- request the next page of results.
    ListManagedResources -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (ListManagedResources -> ListManagedResources -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListManagedResources -> ListManagedResources -> Bool
$c/= :: ListManagedResources -> ListManagedResources -> Bool
== :: ListManagedResources -> ListManagedResources -> Bool
$c== :: ListManagedResources -> ListManagedResources -> Bool
Prelude.Eq, ReadPrec [ListManagedResources]
ReadPrec ListManagedResources
Int -> ReadS ListManagedResources
ReadS [ListManagedResources]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListManagedResources]
$creadListPrec :: ReadPrec [ListManagedResources]
readPrec :: ReadPrec ListManagedResources
$creadPrec :: ReadPrec ListManagedResources
readList :: ReadS [ListManagedResources]
$creadList :: ReadS [ListManagedResources]
readsPrec :: Int -> ReadS ListManagedResources
$creadsPrec :: Int -> ReadS ListManagedResources
Prelude.Read, Int -> ListManagedResources -> ShowS
[ListManagedResources] -> ShowS
ListManagedResources -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListManagedResources] -> ShowS
$cshowList :: [ListManagedResources] -> ShowS
show :: ListManagedResources -> String
$cshow :: ListManagedResources -> String
showsPrec :: Int -> ListManagedResources -> ShowS
$cshowsPrec :: Int -> ListManagedResources -> ShowS
Prelude.Show, forall x. Rep ListManagedResources x -> ListManagedResources
forall x. ListManagedResources -> Rep ListManagedResources x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListManagedResources x -> ListManagedResources
$cfrom :: forall x. ListManagedResources -> Rep ListManagedResources x
Prelude.Generic)

-- |
-- Create a value of 'ListManagedResources' 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:
--
-- 'maxResults', 'listManagedResources_maxResults' - The number of objects that you want to return with this call.
--
-- 'nextToken', 'listManagedResources_nextToken' - Specifies that you want to receive the next page of results. Valid only
-- if you received a @NextToken@ response in the previous request. If you
-- did, it indicates that more output is available. Set this parameter to
-- the value provided by the previous call\'s @NextToken@ response to
-- request the next page of results.
newListManagedResources ::
  ListManagedResources
newListManagedResources :: ListManagedResources
newListManagedResources =
  ListManagedResources'
    { $sel:maxResults:ListManagedResources' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListManagedResources' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | The number of objects that you want to return with this call.
listManagedResources_maxResults :: Lens.Lens' ListManagedResources (Prelude.Maybe Prelude.Natural)
listManagedResources_maxResults :: Lens' ListManagedResources (Maybe Natural)
listManagedResources_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListManagedResources' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListManagedResources' :: ListManagedResources -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListManagedResources
s@ListManagedResources' {} Maybe Natural
a -> ListManagedResources
s {$sel:maxResults:ListManagedResources' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListManagedResources)

-- | Specifies that you want to receive the next page of results. Valid only
-- if you received a @NextToken@ response in the previous request. If you
-- did, it indicates that more output is available. Set this parameter to
-- the value provided by the previous call\'s @NextToken@ response to
-- request the next page of results.
listManagedResources_nextToken :: Lens.Lens' ListManagedResources (Prelude.Maybe Prelude.Text)
listManagedResources_nextToken :: Lens' ListManagedResources (Maybe Text)
listManagedResources_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListManagedResources' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListManagedResources' :: ListManagedResources -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListManagedResources
s@ListManagedResources' {} Maybe Text
a -> ListManagedResources
s {$sel:nextToken:ListManagedResources' :: Maybe Text
nextToken = Maybe Text
a} :: ListManagedResources)

instance Core.AWSPager ListManagedResources where
  page :: ListManagedResources
-> AWSResponse ListManagedResources -> Maybe ListManagedResources
page ListManagedResources
rq AWSResponse ListManagedResources
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListManagedResources
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListManagedResourcesResponse (Maybe Text)
listManagedResourcesResponse_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 ListManagedResources
rs forall s a. s -> Getting a s a -> a
Lens.^. Lens' ListManagedResourcesResponse [ManagedResourceSummary]
listManagedResourcesResponse_items) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ ListManagedResources
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListManagedResources (Maybe Text)
listManagedResources_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListManagedResources
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListManagedResourcesResponse (Maybe Text)
listManagedResourcesResponse_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 ListManagedResources where
  type
    AWSResponse ListManagedResources =
      ListManagedResourcesResponse
  request :: (Service -> Service)
-> ListManagedResources -> Request ListManagedResources
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListManagedResources
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListManagedResources)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Int -> [ManagedResourceSummary] -> ListManagedResourcesResponse
ListManagedResourcesResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"items" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable ListManagedResources where
  hashWithSalt :: Int -> ListManagedResources -> Int
hashWithSalt Int
_salt ListManagedResources' {Maybe Natural
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:nextToken:ListManagedResources' :: ListManagedResources -> Maybe Text
$sel:maxResults:ListManagedResources' :: ListManagedResources -> Maybe Natural
..} =
    Int
_salt
      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 ListManagedResources where
  rnf :: ListManagedResources -> ()
rnf ListManagedResources' {Maybe Natural
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:nextToken:ListManagedResources' :: ListManagedResources -> Maybe Text
$sel:maxResults:ListManagedResources' :: ListManagedResources -> Maybe Natural
..} =
    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 ListManagedResources where
  toHeaders :: ListManagedResources -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

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

instance Data.ToQuery ListManagedResources where
  toQuery :: ListManagedResources -> QueryString
toQuery ListManagedResources' {Maybe Natural
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:nextToken:ListManagedResources' :: ListManagedResources -> Maybe Text
$sel:maxResults:ListManagedResources' :: ListManagedResources -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ 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:/ 'newListManagedResourcesResponse' smart constructor.
data ListManagedResourcesResponse = ListManagedResourcesResponse'
  { -- | Specifies that you want to receive the next page of results. Valid only
    -- if you received a @NextToken@ response in the previous request. If you
    -- did, it indicates that more output is available. Set this parameter to
    -- the value provided by the previous call\'s @NextToken@ response to
    -- request the next page of results.
    ListManagedResourcesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListManagedResourcesResponse -> Int
httpStatus :: Prelude.Int,
    -- | The items in the response list.
    ListManagedResourcesResponse -> [ManagedResourceSummary]
items :: [ManagedResourceSummary]
  }
  deriving (ListManagedResourcesResponse
-> ListManagedResourcesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListManagedResourcesResponse
-> ListManagedResourcesResponse -> Bool
$c/= :: ListManagedResourcesResponse
-> ListManagedResourcesResponse -> Bool
== :: ListManagedResourcesResponse
-> ListManagedResourcesResponse -> Bool
$c== :: ListManagedResourcesResponse
-> ListManagedResourcesResponse -> Bool
Prelude.Eq, ReadPrec [ListManagedResourcesResponse]
ReadPrec ListManagedResourcesResponse
Int -> ReadS ListManagedResourcesResponse
ReadS [ListManagedResourcesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListManagedResourcesResponse]
$creadListPrec :: ReadPrec [ListManagedResourcesResponse]
readPrec :: ReadPrec ListManagedResourcesResponse
$creadPrec :: ReadPrec ListManagedResourcesResponse
readList :: ReadS [ListManagedResourcesResponse]
$creadList :: ReadS [ListManagedResourcesResponse]
readsPrec :: Int -> ReadS ListManagedResourcesResponse
$creadsPrec :: Int -> ReadS ListManagedResourcesResponse
Prelude.Read, Int -> ListManagedResourcesResponse -> ShowS
[ListManagedResourcesResponse] -> ShowS
ListManagedResourcesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListManagedResourcesResponse] -> ShowS
$cshowList :: [ListManagedResourcesResponse] -> ShowS
show :: ListManagedResourcesResponse -> String
$cshow :: ListManagedResourcesResponse -> String
showsPrec :: Int -> ListManagedResourcesResponse -> ShowS
$cshowsPrec :: Int -> ListManagedResourcesResponse -> ShowS
Prelude.Show, forall x.
Rep ListManagedResourcesResponse x -> ListManagedResourcesResponse
forall x.
ListManagedResourcesResponse -> Rep ListManagedResourcesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListManagedResourcesResponse x -> ListManagedResourcesResponse
$cfrom :: forall x.
ListManagedResourcesResponse -> Rep ListManagedResourcesResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListManagedResourcesResponse' 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', 'listManagedResourcesResponse_nextToken' - Specifies that you want to receive the next page of results. Valid only
-- if you received a @NextToken@ response in the previous request. If you
-- did, it indicates that more output is available. Set this parameter to
-- the value provided by the previous call\'s @NextToken@ response to
-- request the next page of results.
--
-- 'httpStatus', 'listManagedResourcesResponse_httpStatus' - The response's http status code.
--
-- 'items', 'listManagedResourcesResponse_items' - The items in the response list.
newListManagedResourcesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListManagedResourcesResponse
newListManagedResourcesResponse :: Int -> ListManagedResourcesResponse
newListManagedResourcesResponse Int
pHttpStatus_ =
  ListManagedResourcesResponse'
    { $sel:nextToken:ListManagedResourcesResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListManagedResourcesResponse' :: Int
httpStatus = Int
pHttpStatus_,
      $sel:items:ListManagedResourcesResponse' :: [ManagedResourceSummary]
items = forall a. Monoid a => a
Prelude.mempty
    }

-- | Specifies that you want to receive the next page of results. Valid only
-- if you received a @NextToken@ response in the previous request. If you
-- did, it indicates that more output is available. Set this parameter to
-- the value provided by the previous call\'s @NextToken@ response to
-- request the next page of results.
listManagedResourcesResponse_nextToken :: Lens.Lens' ListManagedResourcesResponse (Prelude.Maybe Prelude.Text)
listManagedResourcesResponse_nextToken :: Lens' ListManagedResourcesResponse (Maybe Text)
listManagedResourcesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListManagedResourcesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListManagedResourcesResponse' :: ListManagedResourcesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListManagedResourcesResponse
s@ListManagedResourcesResponse' {} Maybe Text
a -> ListManagedResourcesResponse
s {$sel:nextToken:ListManagedResourcesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListManagedResourcesResponse)

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

-- | The items in the response list.
listManagedResourcesResponse_items :: Lens.Lens' ListManagedResourcesResponse [ManagedResourceSummary]
listManagedResourcesResponse_items :: Lens' ListManagedResourcesResponse [ManagedResourceSummary]
listManagedResourcesResponse_items = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListManagedResourcesResponse' {[ManagedResourceSummary]
items :: [ManagedResourceSummary]
$sel:items:ListManagedResourcesResponse' :: ListManagedResourcesResponse -> [ManagedResourceSummary]
items} -> [ManagedResourceSummary]
items) (\s :: ListManagedResourcesResponse
s@ListManagedResourcesResponse' {} [ManagedResourceSummary]
a -> ListManagedResourcesResponse
s {$sel:items:ListManagedResourcesResponse' :: [ManagedResourceSummary]
items = [ManagedResourceSummary]
a} :: ListManagedResourcesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Prelude.NFData ListManagedResourcesResponse where
  rnf :: ListManagedResourcesResponse -> ()
rnf ListManagedResourcesResponse' {Int
[ManagedResourceSummary]
Maybe Text
items :: [ManagedResourceSummary]
httpStatus :: Int
nextToken :: Maybe Text
$sel:items:ListManagedResourcesResponse' :: ListManagedResourcesResponse -> [ManagedResourceSummary]
$sel:httpStatus:ListManagedResourcesResponse' :: ListManagedResourcesResponse -> Int
$sel:nextToken:ListManagedResourcesResponse' :: ListManagedResourcesResponse -> Maybe Text
..} =
    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
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [ManagedResourceSummary]
items