{-# 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.DrS.DescribeRecoveryInstances
-- 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 Recovery Instances or multiple Recovery Instances by ID.
--
-- This operation returns paginated results.
module Amazonka.DrS.DescribeRecoveryInstances
  ( -- * Creating a Request
    DescribeRecoveryInstances (..),
    newDescribeRecoveryInstances,

    -- * Request Lenses
    describeRecoveryInstances_filters,
    describeRecoveryInstances_maxResults,
    describeRecoveryInstances_nextToken,

    -- * Destructuring the Response
    DescribeRecoveryInstancesResponse (..),
    newDescribeRecoveryInstancesResponse,

    -- * Response Lenses
    describeRecoveryInstancesResponse_items,
    describeRecoveryInstancesResponse_nextToken,
    describeRecoveryInstancesResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeRecoveryInstances' smart constructor.
data DescribeRecoveryInstances = DescribeRecoveryInstances'
  { -- | A set of filters by which to return Recovery Instances.
    DescribeRecoveryInstances
-> Maybe DescribeRecoveryInstancesRequestFilters
filters :: Prelude.Maybe DescribeRecoveryInstancesRequestFilters,
    -- | Maximum number of Recovery Instances to retrieve.
    DescribeRecoveryInstances -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token of the next Recovery Instance to retrieve.
    DescribeRecoveryInstances -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeRecoveryInstances -> DescribeRecoveryInstances -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRecoveryInstances -> DescribeRecoveryInstances -> Bool
$c/= :: DescribeRecoveryInstances -> DescribeRecoveryInstances -> Bool
== :: DescribeRecoveryInstances -> DescribeRecoveryInstances -> Bool
$c== :: DescribeRecoveryInstances -> DescribeRecoveryInstances -> Bool
Prelude.Eq, ReadPrec [DescribeRecoveryInstances]
ReadPrec DescribeRecoveryInstances
Int -> ReadS DescribeRecoveryInstances
ReadS [DescribeRecoveryInstances]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeRecoveryInstances]
$creadListPrec :: ReadPrec [DescribeRecoveryInstances]
readPrec :: ReadPrec DescribeRecoveryInstances
$creadPrec :: ReadPrec DescribeRecoveryInstances
readList :: ReadS [DescribeRecoveryInstances]
$creadList :: ReadS [DescribeRecoveryInstances]
readsPrec :: Int -> ReadS DescribeRecoveryInstances
$creadsPrec :: Int -> ReadS DescribeRecoveryInstances
Prelude.Read, Int -> DescribeRecoveryInstances -> ShowS
[DescribeRecoveryInstances] -> ShowS
DescribeRecoveryInstances -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRecoveryInstances] -> ShowS
$cshowList :: [DescribeRecoveryInstances] -> ShowS
show :: DescribeRecoveryInstances -> String
$cshow :: DescribeRecoveryInstances -> String
showsPrec :: Int -> DescribeRecoveryInstances -> ShowS
$cshowsPrec :: Int -> DescribeRecoveryInstances -> ShowS
Prelude.Show, forall x.
Rep DescribeRecoveryInstances x -> DescribeRecoveryInstances
forall x.
DescribeRecoveryInstances -> Rep DescribeRecoveryInstances x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeRecoveryInstances x -> DescribeRecoveryInstances
$cfrom :: forall x.
DescribeRecoveryInstances -> Rep DescribeRecoveryInstances x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRecoveryInstances' 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:
--
-- 'filters', 'describeRecoveryInstances_filters' - A set of filters by which to return Recovery Instances.
--
-- 'maxResults', 'describeRecoveryInstances_maxResults' - Maximum number of Recovery Instances to retrieve.
--
-- 'nextToken', 'describeRecoveryInstances_nextToken' - The token of the next Recovery Instance to retrieve.
newDescribeRecoveryInstances ::
  DescribeRecoveryInstances
newDescribeRecoveryInstances :: DescribeRecoveryInstances
newDescribeRecoveryInstances =
  DescribeRecoveryInstances'
    { $sel:filters:DescribeRecoveryInstances' :: Maybe DescribeRecoveryInstancesRequestFilters
filters =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeRecoveryInstances' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeRecoveryInstances' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | A set of filters by which to return Recovery Instances.
describeRecoveryInstances_filters :: Lens.Lens' DescribeRecoveryInstances (Prelude.Maybe DescribeRecoveryInstancesRequestFilters)
describeRecoveryInstances_filters :: Lens'
  DescribeRecoveryInstances
  (Maybe DescribeRecoveryInstancesRequestFilters)
describeRecoveryInstances_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRecoveryInstances' {Maybe DescribeRecoveryInstancesRequestFilters
filters :: Maybe DescribeRecoveryInstancesRequestFilters
$sel:filters:DescribeRecoveryInstances' :: DescribeRecoveryInstances
-> Maybe DescribeRecoveryInstancesRequestFilters
filters} -> Maybe DescribeRecoveryInstancesRequestFilters
filters) (\s :: DescribeRecoveryInstances
s@DescribeRecoveryInstances' {} Maybe DescribeRecoveryInstancesRequestFilters
a -> DescribeRecoveryInstances
s {$sel:filters:DescribeRecoveryInstances' :: Maybe DescribeRecoveryInstancesRequestFilters
filters = Maybe DescribeRecoveryInstancesRequestFilters
a} :: DescribeRecoveryInstances)

-- | Maximum number of Recovery Instances to retrieve.
describeRecoveryInstances_maxResults :: Lens.Lens' DescribeRecoveryInstances (Prelude.Maybe Prelude.Natural)
describeRecoveryInstances_maxResults :: Lens' DescribeRecoveryInstances (Maybe Natural)
describeRecoveryInstances_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRecoveryInstances' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeRecoveryInstances' :: DescribeRecoveryInstances -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeRecoveryInstances
s@DescribeRecoveryInstances' {} Maybe Natural
a -> DescribeRecoveryInstances
s {$sel:maxResults:DescribeRecoveryInstances' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeRecoveryInstances)

-- | The token of the next Recovery Instance to retrieve.
describeRecoveryInstances_nextToken :: Lens.Lens' DescribeRecoveryInstances (Prelude.Maybe Prelude.Text)
describeRecoveryInstances_nextToken :: Lens' DescribeRecoveryInstances (Maybe Text)
describeRecoveryInstances_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRecoveryInstances' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeRecoveryInstances' :: DescribeRecoveryInstances -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeRecoveryInstances
s@DescribeRecoveryInstances' {} Maybe Text
a -> DescribeRecoveryInstances
s {$sel:nextToken:DescribeRecoveryInstances' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeRecoveryInstances)

instance Core.AWSPager DescribeRecoveryInstances where
  page :: DescribeRecoveryInstances
-> AWSResponse DescribeRecoveryInstances
-> Maybe DescribeRecoveryInstances
page DescribeRecoveryInstances
rq AWSResponse DescribeRecoveryInstances
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeRecoveryInstances
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRecoveryInstancesResponse (Maybe Text)
describeRecoveryInstancesResponse_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 DescribeRecoveryInstances
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRecoveryInstancesResponse (Maybe [RecoveryInstance])
describeRecoveryInstancesResponse_items
            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.$ DescribeRecoveryInstances
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeRecoveryInstances (Maybe Text)
describeRecoveryInstances_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeRecoveryInstances
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRecoveryInstancesResponse (Maybe Text)
describeRecoveryInstancesResponse_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 DescribeRecoveryInstances where
  type
    AWSResponse DescribeRecoveryInstances =
      DescribeRecoveryInstancesResponse
  request :: (Service -> Service)
-> DescribeRecoveryInstances -> Request DescribeRecoveryInstances
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeRecoveryInstances
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeRecoveryInstances)))
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 [RecoveryInstance]
-> Maybe Text -> Int -> DescribeRecoveryInstancesResponse
DescribeRecoveryInstancesResponse'
            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
"items" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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
"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 DescribeRecoveryInstances where
  hashWithSalt :: Int -> DescribeRecoveryInstances -> Int
hashWithSalt Int
_salt DescribeRecoveryInstances' {Maybe Natural
Maybe Text
Maybe DescribeRecoveryInstancesRequestFilters
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe DescribeRecoveryInstancesRequestFilters
$sel:nextToken:DescribeRecoveryInstances' :: DescribeRecoveryInstances -> Maybe Text
$sel:maxResults:DescribeRecoveryInstances' :: DescribeRecoveryInstances -> Maybe Natural
$sel:filters:DescribeRecoveryInstances' :: DescribeRecoveryInstances
-> Maybe DescribeRecoveryInstancesRequestFilters
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DescribeRecoveryInstancesRequestFilters
filters
      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 DescribeRecoveryInstances where
  rnf :: DescribeRecoveryInstances -> ()
rnf DescribeRecoveryInstances' {Maybe Natural
Maybe Text
Maybe DescribeRecoveryInstancesRequestFilters
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe DescribeRecoveryInstancesRequestFilters
$sel:nextToken:DescribeRecoveryInstances' :: DescribeRecoveryInstances -> Maybe Text
$sel:maxResults:DescribeRecoveryInstances' :: DescribeRecoveryInstances -> Maybe Natural
$sel:filters:DescribeRecoveryInstances' :: DescribeRecoveryInstances
-> Maybe DescribeRecoveryInstancesRequestFilters
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DescribeRecoveryInstancesRequestFilters
filters
      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 DescribeRecoveryInstances where
  toHeaders :: DescribeRecoveryInstances -> 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.ToJSON DescribeRecoveryInstances where
  toJSON :: DescribeRecoveryInstances -> Value
toJSON DescribeRecoveryInstances' {Maybe Natural
Maybe Text
Maybe DescribeRecoveryInstancesRequestFilters
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe DescribeRecoveryInstancesRequestFilters
$sel:nextToken:DescribeRecoveryInstances' :: DescribeRecoveryInstances -> Maybe Text
$sel:maxResults:DescribeRecoveryInstances' :: DescribeRecoveryInstances -> Maybe Natural
$sel:filters:DescribeRecoveryInstances' :: DescribeRecoveryInstances
-> Maybe DescribeRecoveryInstancesRequestFilters
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"filters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DescribeRecoveryInstancesRequestFilters
filters,
            (Key
"maxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxResults,
            (Key
"nextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken
          ]
      )

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

instance Data.ToQuery DescribeRecoveryInstances where
  toQuery :: DescribeRecoveryInstances -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeRecoveryInstancesResponse' smart constructor.
data DescribeRecoveryInstancesResponse = DescribeRecoveryInstancesResponse'
  { -- | An array of Recovery Instances.
    DescribeRecoveryInstancesResponse -> Maybe [RecoveryInstance]
items :: Prelude.Maybe [RecoveryInstance],
    -- | The token of the next Recovery Instance to retrieve.
    DescribeRecoveryInstancesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeRecoveryInstancesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeRecoveryInstancesResponse
-> DescribeRecoveryInstancesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRecoveryInstancesResponse
-> DescribeRecoveryInstancesResponse -> Bool
$c/= :: DescribeRecoveryInstancesResponse
-> DescribeRecoveryInstancesResponse -> Bool
== :: DescribeRecoveryInstancesResponse
-> DescribeRecoveryInstancesResponse -> Bool
$c== :: DescribeRecoveryInstancesResponse
-> DescribeRecoveryInstancesResponse -> Bool
Prelude.Eq, Int -> DescribeRecoveryInstancesResponse -> ShowS
[DescribeRecoveryInstancesResponse] -> ShowS
DescribeRecoveryInstancesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRecoveryInstancesResponse] -> ShowS
$cshowList :: [DescribeRecoveryInstancesResponse] -> ShowS
show :: DescribeRecoveryInstancesResponse -> String
$cshow :: DescribeRecoveryInstancesResponse -> String
showsPrec :: Int -> DescribeRecoveryInstancesResponse -> ShowS
$cshowsPrec :: Int -> DescribeRecoveryInstancesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeRecoveryInstancesResponse x
-> DescribeRecoveryInstancesResponse
forall x.
DescribeRecoveryInstancesResponse
-> Rep DescribeRecoveryInstancesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeRecoveryInstancesResponse x
-> DescribeRecoveryInstancesResponse
$cfrom :: forall x.
DescribeRecoveryInstancesResponse
-> Rep DescribeRecoveryInstancesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRecoveryInstancesResponse' 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:
--
-- 'items', 'describeRecoveryInstancesResponse_items' - An array of Recovery Instances.
--
-- 'nextToken', 'describeRecoveryInstancesResponse_nextToken' - The token of the next Recovery Instance to retrieve.
--
-- 'httpStatus', 'describeRecoveryInstancesResponse_httpStatus' - The response's http status code.
newDescribeRecoveryInstancesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeRecoveryInstancesResponse
newDescribeRecoveryInstancesResponse :: Int -> DescribeRecoveryInstancesResponse
newDescribeRecoveryInstancesResponse Int
pHttpStatus_ =
  DescribeRecoveryInstancesResponse'
    { $sel:items:DescribeRecoveryInstancesResponse' :: Maybe [RecoveryInstance]
items =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeRecoveryInstancesResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeRecoveryInstancesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | An array of Recovery Instances.
describeRecoveryInstancesResponse_items :: Lens.Lens' DescribeRecoveryInstancesResponse (Prelude.Maybe [RecoveryInstance])
describeRecoveryInstancesResponse_items :: Lens' DescribeRecoveryInstancesResponse (Maybe [RecoveryInstance])
describeRecoveryInstancesResponse_items = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRecoveryInstancesResponse' {Maybe [RecoveryInstance]
items :: Maybe [RecoveryInstance]
$sel:items:DescribeRecoveryInstancesResponse' :: DescribeRecoveryInstancesResponse -> Maybe [RecoveryInstance]
items} -> Maybe [RecoveryInstance]
items) (\s :: DescribeRecoveryInstancesResponse
s@DescribeRecoveryInstancesResponse' {} Maybe [RecoveryInstance]
a -> DescribeRecoveryInstancesResponse
s {$sel:items:DescribeRecoveryInstancesResponse' :: Maybe [RecoveryInstance]
items = Maybe [RecoveryInstance]
a} :: DescribeRecoveryInstancesResponse) 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 of the next Recovery Instance to retrieve.
describeRecoveryInstancesResponse_nextToken :: Lens.Lens' DescribeRecoveryInstancesResponse (Prelude.Maybe Prelude.Text)
describeRecoveryInstancesResponse_nextToken :: Lens' DescribeRecoveryInstancesResponse (Maybe Text)
describeRecoveryInstancesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRecoveryInstancesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeRecoveryInstancesResponse' :: DescribeRecoveryInstancesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeRecoveryInstancesResponse
s@DescribeRecoveryInstancesResponse' {} Maybe Text
a -> DescribeRecoveryInstancesResponse
s {$sel:nextToken:DescribeRecoveryInstancesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeRecoveryInstancesResponse)

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

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