{-# 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.StorageGateway.DescribeTapes
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns a description of the specified Amazon Resource Name (ARN) of
-- virtual tapes. If a @TapeARN@ is not specified, returns a description of
-- all virtual tapes associated with the specified gateway. This operation
-- is only supported in the tape gateway type.
--
-- This operation returns paginated results.
module Amazonka.StorageGateway.DescribeTapes
  ( -- * Creating a Request
    DescribeTapes (..),
    newDescribeTapes,

    -- * Request Lenses
    describeTapes_limit,
    describeTapes_marker,
    describeTapes_tapeARNs,
    describeTapes_gatewayARN,

    -- * Destructuring the Response
    DescribeTapesResponse (..),
    newDescribeTapesResponse,

    -- * Response Lenses
    describeTapesResponse_marker,
    describeTapesResponse_tapes,
    describeTapesResponse_httpStatus,
  )
where

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
import Amazonka.StorageGateway.Types

-- | DescribeTapesInput
--
-- /See:/ 'newDescribeTapes' smart constructor.
data DescribeTapes = DescribeTapes'
  { -- | Specifies that the number of virtual tapes described be limited to the
    -- specified number.
    --
    -- Amazon Web Services may impose its own limit, if this field is not set.
    DescribeTapes -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | A marker value, obtained in a previous call to @DescribeTapes@. This
    -- marker indicates which page of results to retrieve.
    --
    -- If not specified, the first page of results is retrieved.
    DescribeTapes -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | Specifies one or more unique Amazon Resource Names (ARNs) that represent
    -- the virtual tapes you want to describe. If this parameter is not
    -- specified, Tape gateway returns a description of all virtual tapes
    -- associated with the specified gateway.
    DescribeTapes -> Maybe [Text]
tapeARNs :: Prelude.Maybe [Prelude.Text],
    DescribeTapes -> Text
gatewayARN :: Prelude.Text
  }
  deriving (DescribeTapes -> DescribeTapes -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTapes -> DescribeTapes -> Bool
$c/= :: DescribeTapes -> DescribeTapes -> Bool
== :: DescribeTapes -> DescribeTapes -> Bool
$c== :: DescribeTapes -> DescribeTapes -> Bool
Prelude.Eq, ReadPrec [DescribeTapes]
ReadPrec DescribeTapes
Int -> ReadS DescribeTapes
ReadS [DescribeTapes]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTapes]
$creadListPrec :: ReadPrec [DescribeTapes]
readPrec :: ReadPrec DescribeTapes
$creadPrec :: ReadPrec DescribeTapes
readList :: ReadS [DescribeTapes]
$creadList :: ReadS [DescribeTapes]
readsPrec :: Int -> ReadS DescribeTapes
$creadsPrec :: Int -> ReadS DescribeTapes
Prelude.Read, Int -> DescribeTapes -> ShowS
[DescribeTapes] -> ShowS
DescribeTapes -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTapes] -> ShowS
$cshowList :: [DescribeTapes] -> ShowS
show :: DescribeTapes -> String
$cshow :: DescribeTapes -> String
showsPrec :: Int -> DescribeTapes -> ShowS
$cshowsPrec :: Int -> DescribeTapes -> ShowS
Prelude.Show, forall x. Rep DescribeTapes x -> DescribeTapes
forall x. DescribeTapes -> Rep DescribeTapes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeTapes x -> DescribeTapes
$cfrom :: forall x. DescribeTapes -> Rep DescribeTapes x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTapes' 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:
--
-- 'limit', 'describeTapes_limit' - Specifies that the number of virtual tapes described be limited to the
-- specified number.
--
-- Amazon Web Services may impose its own limit, if this field is not set.
--
-- 'marker', 'describeTapes_marker' - A marker value, obtained in a previous call to @DescribeTapes@. This
-- marker indicates which page of results to retrieve.
--
-- If not specified, the first page of results is retrieved.
--
-- 'tapeARNs', 'describeTapes_tapeARNs' - Specifies one or more unique Amazon Resource Names (ARNs) that represent
-- the virtual tapes you want to describe. If this parameter is not
-- specified, Tape gateway returns a description of all virtual tapes
-- associated with the specified gateway.
--
-- 'gatewayARN', 'describeTapes_gatewayARN' - Undocumented member.
newDescribeTapes ::
  -- | 'gatewayARN'
  Prelude.Text ->
  DescribeTapes
newDescribeTapes :: Text -> DescribeTapes
newDescribeTapes Text
pGatewayARN_ =
  DescribeTapes'
    { $sel:limit:DescribeTapes' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeTapes' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:tapeARNs:DescribeTapes' :: Maybe [Text]
tapeARNs = forall a. Maybe a
Prelude.Nothing,
      $sel:gatewayARN:DescribeTapes' :: Text
gatewayARN = Text
pGatewayARN_
    }

-- | Specifies that the number of virtual tapes described be limited to the
-- specified number.
--
-- Amazon Web Services may impose its own limit, if this field is not set.
describeTapes_limit :: Lens.Lens' DescribeTapes (Prelude.Maybe Prelude.Natural)
describeTapes_limit :: Lens' DescribeTapes (Maybe Natural)
describeTapes_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTapes' {Maybe Natural
limit :: Maybe Natural
$sel:limit:DescribeTapes' :: DescribeTapes -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: DescribeTapes
s@DescribeTapes' {} Maybe Natural
a -> DescribeTapes
s {$sel:limit:DescribeTapes' :: Maybe Natural
limit = Maybe Natural
a} :: DescribeTapes)

-- | A marker value, obtained in a previous call to @DescribeTapes@. This
-- marker indicates which page of results to retrieve.
--
-- If not specified, the first page of results is retrieved.
describeTapes_marker :: Lens.Lens' DescribeTapes (Prelude.Maybe Prelude.Text)
describeTapes_marker :: Lens' DescribeTapes (Maybe Text)
describeTapes_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTapes' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeTapes' :: DescribeTapes -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeTapes
s@DescribeTapes' {} Maybe Text
a -> DescribeTapes
s {$sel:marker:DescribeTapes' :: Maybe Text
marker = Maybe Text
a} :: DescribeTapes)

-- | Specifies one or more unique Amazon Resource Names (ARNs) that represent
-- the virtual tapes you want to describe. If this parameter is not
-- specified, Tape gateway returns a description of all virtual tapes
-- associated with the specified gateway.
describeTapes_tapeARNs :: Lens.Lens' DescribeTapes (Prelude.Maybe [Prelude.Text])
describeTapes_tapeARNs :: Lens' DescribeTapes (Maybe [Text])
describeTapes_tapeARNs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTapes' {Maybe [Text]
tapeARNs :: Maybe [Text]
$sel:tapeARNs:DescribeTapes' :: DescribeTapes -> Maybe [Text]
tapeARNs} -> Maybe [Text]
tapeARNs) (\s :: DescribeTapes
s@DescribeTapes' {} Maybe [Text]
a -> DescribeTapes
s {$sel:tapeARNs:DescribeTapes' :: Maybe [Text]
tapeARNs = Maybe [Text]
a} :: DescribeTapes) 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

-- | Undocumented member.
describeTapes_gatewayARN :: Lens.Lens' DescribeTapes Prelude.Text
describeTapes_gatewayARN :: Lens' DescribeTapes Text
describeTapes_gatewayARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTapes' {Text
gatewayARN :: Text
$sel:gatewayARN:DescribeTapes' :: DescribeTapes -> Text
gatewayARN} -> Text
gatewayARN) (\s :: DescribeTapes
s@DescribeTapes' {} Text
a -> DescribeTapes
s {$sel:gatewayARN:DescribeTapes' :: Text
gatewayARN = Text
a} :: DescribeTapes)

instance Core.AWSPager DescribeTapes where
  page :: DescribeTapes -> AWSResponse DescribeTapes -> Maybe DescribeTapes
page DescribeTapes
rq AWSResponse DescribeTapes
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeTapes
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeTapesResponse (Maybe Text)
describeTapesResponse_marker
            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 DescribeTapes
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeTapesResponse (Maybe [Tape])
describeTapesResponse_tapes
            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.$ DescribeTapes
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeTapes (Maybe Text)
describeTapes_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeTapes
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeTapesResponse (Maybe Text)
describeTapesResponse_marker
          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 DescribeTapes where
  type
    AWSResponse DescribeTapes =
      DescribeTapesResponse
  request :: (Service -> Service) -> DescribeTapes -> Request DescribeTapes
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 DescribeTapes
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeTapes)))
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 -> Maybe [Tape] -> Int -> DescribeTapesResponse
DescribeTapesResponse'
            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
"Marker")
            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
"Tapes" 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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeTapes where
  hashWithSalt :: Int -> DescribeTapes -> Int
hashWithSalt Int
_salt DescribeTapes' {Maybe Natural
Maybe [Text]
Maybe Text
Text
gatewayARN :: Text
tapeARNs :: Maybe [Text]
marker :: Maybe Text
limit :: Maybe Natural
$sel:gatewayARN:DescribeTapes' :: DescribeTapes -> Text
$sel:tapeARNs:DescribeTapes' :: DescribeTapes -> Maybe [Text]
$sel:marker:DescribeTapes' :: DescribeTapes -> Maybe Text
$sel:limit:DescribeTapes' :: DescribeTapes -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
tapeARNs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
gatewayARN

instance Prelude.NFData DescribeTapes where
  rnf :: DescribeTapes -> ()
rnf DescribeTapes' {Maybe Natural
Maybe [Text]
Maybe Text
Text
gatewayARN :: Text
tapeARNs :: Maybe [Text]
marker :: Maybe Text
limit :: Maybe Natural
$sel:gatewayARN:DescribeTapes' :: DescribeTapes -> Text
$sel:tapeARNs:DescribeTapes' :: DescribeTapes -> Maybe [Text]
$sel:marker:DescribeTapes' :: DescribeTapes -> Maybe Text
$sel:limit:DescribeTapes' :: DescribeTapes -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
limit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
tapeARNs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
gatewayARN

instance Data.ToHeaders DescribeTapes where
  toHeaders :: DescribeTapes -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"StorageGateway_20130630.DescribeTapes" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeTapes where
  toJSON :: DescribeTapes -> Value
toJSON DescribeTapes' {Maybe Natural
Maybe [Text]
Maybe Text
Text
gatewayARN :: Text
tapeARNs :: Maybe [Text]
marker :: Maybe Text
limit :: Maybe Natural
$sel:gatewayARN:DescribeTapes' :: DescribeTapes -> Text
$sel:tapeARNs:DescribeTapes' :: DescribeTapes -> Maybe [Text]
$sel:marker:DescribeTapes' :: DescribeTapes -> Maybe Text
$sel:limit:DescribeTapes' :: DescribeTapes -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Limit" 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
limit,
            (Key
"Marker" 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
marker,
            (Key
"TapeARNs" 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]
tapeARNs,
            forall a. a -> Maybe a
Prelude.Just (Key
"GatewayARN" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
gatewayARN)
          ]
      )

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

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

-- | DescribeTapesOutput
--
-- /See:/ 'newDescribeTapesResponse' smart constructor.
data DescribeTapesResponse = DescribeTapesResponse'
  { -- | An opaque string that can be used as part of a subsequent
    -- @DescribeTapes@ call to retrieve the next page of results.
    --
    -- If a response does not contain a marker, then there are no more results
    -- to be retrieved.
    DescribeTapesResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | An array of virtual tape descriptions.
    DescribeTapesResponse -> Maybe [Tape]
tapes :: Prelude.Maybe [Tape],
    -- | The response's http status code.
    DescribeTapesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeTapesResponse -> DescribeTapesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTapesResponse -> DescribeTapesResponse -> Bool
$c/= :: DescribeTapesResponse -> DescribeTapesResponse -> Bool
== :: DescribeTapesResponse -> DescribeTapesResponse -> Bool
$c== :: DescribeTapesResponse -> DescribeTapesResponse -> Bool
Prelude.Eq, ReadPrec [DescribeTapesResponse]
ReadPrec DescribeTapesResponse
Int -> ReadS DescribeTapesResponse
ReadS [DescribeTapesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTapesResponse]
$creadListPrec :: ReadPrec [DescribeTapesResponse]
readPrec :: ReadPrec DescribeTapesResponse
$creadPrec :: ReadPrec DescribeTapesResponse
readList :: ReadS [DescribeTapesResponse]
$creadList :: ReadS [DescribeTapesResponse]
readsPrec :: Int -> ReadS DescribeTapesResponse
$creadsPrec :: Int -> ReadS DescribeTapesResponse
Prelude.Read, Int -> DescribeTapesResponse -> ShowS
[DescribeTapesResponse] -> ShowS
DescribeTapesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTapesResponse] -> ShowS
$cshowList :: [DescribeTapesResponse] -> ShowS
show :: DescribeTapesResponse -> String
$cshow :: DescribeTapesResponse -> String
showsPrec :: Int -> DescribeTapesResponse -> ShowS
$cshowsPrec :: Int -> DescribeTapesResponse -> ShowS
Prelude.Show, forall x. Rep DescribeTapesResponse x -> DescribeTapesResponse
forall x. DescribeTapesResponse -> Rep DescribeTapesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeTapesResponse x -> DescribeTapesResponse
$cfrom :: forall x. DescribeTapesResponse -> Rep DescribeTapesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTapesResponse' 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:
--
-- 'marker', 'describeTapesResponse_marker' - An opaque string that can be used as part of a subsequent
-- @DescribeTapes@ call to retrieve the next page of results.
--
-- If a response does not contain a marker, then there are no more results
-- to be retrieved.
--
-- 'tapes', 'describeTapesResponse_tapes' - An array of virtual tape descriptions.
--
-- 'httpStatus', 'describeTapesResponse_httpStatus' - The response's http status code.
newDescribeTapesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeTapesResponse
newDescribeTapesResponse :: Int -> DescribeTapesResponse
newDescribeTapesResponse Int
pHttpStatus_ =
  DescribeTapesResponse'
    { $sel:marker:DescribeTapesResponse' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:tapes:DescribeTapesResponse' :: Maybe [Tape]
tapes = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeTapesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | An opaque string that can be used as part of a subsequent
-- @DescribeTapes@ call to retrieve the next page of results.
--
-- If a response does not contain a marker, then there are no more results
-- to be retrieved.
describeTapesResponse_marker :: Lens.Lens' DescribeTapesResponse (Prelude.Maybe Prelude.Text)
describeTapesResponse_marker :: Lens' DescribeTapesResponse (Maybe Text)
describeTapesResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTapesResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeTapesResponse' :: DescribeTapesResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeTapesResponse
s@DescribeTapesResponse' {} Maybe Text
a -> DescribeTapesResponse
s {$sel:marker:DescribeTapesResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeTapesResponse)

-- | An array of virtual tape descriptions.
describeTapesResponse_tapes :: Lens.Lens' DescribeTapesResponse (Prelude.Maybe [Tape])
describeTapesResponse_tapes :: Lens' DescribeTapesResponse (Maybe [Tape])
describeTapesResponse_tapes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTapesResponse' {Maybe [Tape]
tapes :: Maybe [Tape]
$sel:tapes:DescribeTapesResponse' :: DescribeTapesResponse -> Maybe [Tape]
tapes} -> Maybe [Tape]
tapes) (\s :: DescribeTapesResponse
s@DescribeTapesResponse' {} Maybe [Tape]
a -> DescribeTapesResponse
s {$sel:tapes:DescribeTapesResponse' :: Maybe [Tape]
tapes = Maybe [Tape]
a} :: DescribeTapesResponse) 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 response's http status code.
describeTapesResponse_httpStatus :: Lens.Lens' DescribeTapesResponse Prelude.Int
describeTapesResponse_httpStatus :: Lens' DescribeTapesResponse Int
describeTapesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTapesResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeTapesResponse' :: DescribeTapesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeTapesResponse
s@DescribeTapesResponse' {} Int
a -> DescribeTapesResponse
s {$sel:httpStatus:DescribeTapesResponse' :: Int
httpStatus = Int
a} :: DescribeTapesResponse)

instance Prelude.NFData DescribeTapesResponse where
  rnf :: DescribeTapesResponse -> ()
rnf DescribeTapesResponse' {Int
Maybe [Tape]
Maybe Text
httpStatus :: Int
tapes :: Maybe [Tape]
marker :: Maybe Text
$sel:httpStatus:DescribeTapesResponse' :: DescribeTapesResponse -> Int
$sel:tapes:DescribeTapesResponse' :: DescribeTapesResponse -> Maybe [Tape]
$sel:marker:DescribeTapesResponse' :: DescribeTapesResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tape]
tapes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus