{-# 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.Firehose.ListTagsForDeliveryStream
-- 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 the tags for the specified delivery stream. This operation has a
-- limit of five transactions per second per account.
module Amazonka.Firehose.ListTagsForDeliveryStream
  ( -- * Creating a Request
    ListTagsForDeliveryStream (..),
    newListTagsForDeliveryStream,

    -- * Request Lenses
    listTagsForDeliveryStream_exclusiveStartTagKey,
    listTagsForDeliveryStream_limit,
    listTagsForDeliveryStream_deliveryStreamName,

    -- * Destructuring the Response
    ListTagsForDeliveryStreamResponse (..),
    newListTagsForDeliveryStreamResponse,

    -- * Response Lenses
    listTagsForDeliveryStreamResponse_httpStatus,
    listTagsForDeliveryStreamResponse_tags,
    listTagsForDeliveryStreamResponse_hasMoreTags,
  )
where

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

-- | /See:/ 'newListTagsForDeliveryStream' smart constructor.
data ListTagsForDeliveryStream = ListTagsForDeliveryStream'
  { -- | The key to use as the starting point for the list of tags. If you set
    -- this parameter, @ListTagsForDeliveryStream@ gets all tags that occur
    -- after @ExclusiveStartTagKey@.
    ListTagsForDeliveryStream -> Maybe Text
exclusiveStartTagKey :: Prelude.Maybe Prelude.Text,
    -- | The number of tags to return. If this number is less than the total
    -- number of tags associated with the delivery stream, @HasMoreTags@ is set
    -- to @true@ in the response. To list additional tags, set
    -- @ExclusiveStartTagKey@ to the last key in the response.
    ListTagsForDeliveryStream -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The name of the delivery stream whose tags you want to list.
    ListTagsForDeliveryStream -> Text
deliveryStreamName :: Prelude.Text
  }
  deriving (ListTagsForDeliveryStream -> ListTagsForDeliveryStream -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListTagsForDeliveryStream -> ListTagsForDeliveryStream -> Bool
$c/= :: ListTagsForDeliveryStream -> ListTagsForDeliveryStream -> Bool
== :: ListTagsForDeliveryStream -> ListTagsForDeliveryStream -> Bool
$c== :: ListTagsForDeliveryStream -> ListTagsForDeliveryStream -> Bool
Prelude.Eq, ReadPrec [ListTagsForDeliveryStream]
ReadPrec ListTagsForDeliveryStream
Int -> ReadS ListTagsForDeliveryStream
ReadS [ListTagsForDeliveryStream]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListTagsForDeliveryStream]
$creadListPrec :: ReadPrec [ListTagsForDeliveryStream]
readPrec :: ReadPrec ListTagsForDeliveryStream
$creadPrec :: ReadPrec ListTagsForDeliveryStream
readList :: ReadS [ListTagsForDeliveryStream]
$creadList :: ReadS [ListTagsForDeliveryStream]
readsPrec :: Int -> ReadS ListTagsForDeliveryStream
$creadsPrec :: Int -> ReadS ListTagsForDeliveryStream
Prelude.Read, Int -> ListTagsForDeliveryStream -> ShowS
[ListTagsForDeliveryStream] -> ShowS
ListTagsForDeliveryStream -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListTagsForDeliveryStream] -> ShowS
$cshowList :: [ListTagsForDeliveryStream] -> ShowS
show :: ListTagsForDeliveryStream -> String
$cshow :: ListTagsForDeliveryStream -> String
showsPrec :: Int -> ListTagsForDeliveryStream -> ShowS
$cshowsPrec :: Int -> ListTagsForDeliveryStream -> ShowS
Prelude.Show, forall x.
Rep ListTagsForDeliveryStream x -> ListTagsForDeliveryStream
forall x.
ListTagsForDeliveryStream -> Rep ListTagsForDeliveryStream x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListTagsForDeliveryStream x -> ListTagsForDeliveryStream
$cfrom :: forall x.
ListTagsForDeliveryStream -> Rep ListTagsForDeliveryStream x
Prelude.Generic)

-- |
-- Create a value of 'ListTagsForDeliveryStream' 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:
--
-- 'exclusiveStartTagKey', 'listTagsForDeliveryStream_exclusiveStartTagKey' - The key to use as the starting point for the list of tags. If you set
-- this parameter, @ListTagsForDeliveryStream@ gets all tags that occur
-- after @ExclusiveStartTagKey@.
--
-- 'limit', 'listTagsForDeliveryStream_limit' - The number of tags to return. If this number is less than the total
-- number of tags associated with the delivery stream, @HasMoreTags@ is set
-- to @true@ in the response. To list additional tags, set
-- @ExclusiveStartTagKey@ to the last key in the response.
--
-- 'deliveryStreamName', 'listTagsForDeliveryStream_deliveryStreamName' - The name of the delivery stream whose tags you want to list.
newListTagsForDeliveryStream ::
  -- | 'deliveryStreamName'
  Prelude.Text ->
  ListTagsForDeliveryStream
newListTagsForDeliveryStream :: Text -> ListTagsForDeliveryStream
newListTagsForDeliveryStream Text
pDeliveryStreamName_ =
  ListTagsForDeliveryStream'
    { $sel:exclusiveStartTagKey:ListTagsForDeliveryStream' :: Maybe Text
exclusiveStartTagKey =
        forall a. Maybe a
Prelude.Nothing,
      $sel:limit:ListTagsForDeliveryStream' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:deliveryStreamName:ListTagsForDeliveryStream' :: Text
deliveryStreamName = Text
pDeliveryStreamName_
    }

-- | The key to use as the starting point for the list of tags. If you set
-- this parameter, @ListTagsForDeliveryStream@ gets all tags that occur
-- after @ExclusiveStartTagKey@.
listTagsForDeliveryStream_exclusiveStartTagKey :: Lens.Lens' ListTagsForDeliveryStream (Prelude.Maybe Prelude.Text)
listTagsForDeliveryStream_exclusiveStartTagKey :: Lens' ListTagsForDeliveryStream (Maybe Text)
listTagsForDeliveryStream_exclusiveStartTagKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTagsForDeliveryStream' {Maybe Text
exclusiveStartTagKey :: Maybe Text
$sel:exclusiveStartTagKey:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Maybe Text
exclusiveStartTagKey} -> Maybe Text
exclusiveStartTagKey) (\s :: ListTagsForDeliveryStream
s@ListTagsForDeliveryStream' {} Maybe Text
a -> ListTagsForDeliveryStream
s {$sel:exclusiveStartTagKey:ListTagsForDeliveryStream' :: Maybe Text
exclusiveStartTagKey = Maybe Text
a} :: ListTagsForDeliveryStream)

-- | The number of tags to return. If this number is less than the total
-- number of tags associated with the delivery stream, @HasMoreTags@ is set
-- to @true@ in the response. To list additional tags, set
-- @ExclusiveStartTagKey@ to the last key in the response.
listTagsForDeliveryStream_limit :: Lens.Lens' ListTagsForDeliveryStream (Prelude.Maybe Prelude.Natural)
listTagsForDeliveryStream_limit :: Lens' ListTagsForDeliveryStream (Maybe Natural)
listTagsForDeliveryStream_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTagsForDeliveryStream' {Maybe Natural
limit :: Maybe Natural
$sel:limit:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: ListTagsForDeliveryStream
s@ListTagsForDeliveryStream' {} Maybe Natural
a -> ListTagsForDeliveryStream
s {$sel:limit:ListTagsForDeliveryStream' :: Maybe Natural
limit = Maybe Natural
a} :: ListTagsForDeliveryStream)

-- | The name of the delivery stream whose tags you want to list.
listTagsForDeliveryStream_deliveryStreamName :: Lens.Lens' ListTagsForDeliveryStream Prelude.Text
listTagsForDeliveryStream_deliveryStreamName :: Lens' ListTagsForDeliveryStream Text
listTagsForDeliveryStream_deliveryStreamName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTagsForDeliveryStream' {Text
deliveryStreamName :: Text
$sel:deliveryStreamName:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Text
deliveryStreamName} -> Text
deliveryStreamName) (\s :: ListTagsForDeliveryStream
s@ListTagsForDeliveryStream' {} Text
a -> ListTagsForDeliveryStream
s {$sel:deliveryStreamName:ListTagsForDeliveryStream' :: Text
deliveryStreamName = Text
a} :: ListTagsForDeliveryStream)

instance Core.AWSRequest ListTagsForDeliveryStream where
  type
    AWSResponse ListTagsForDeliveryStream =
      ListTagsForDeliveryStreamResponse
  request :: (Service -> Service)
-> ListTagsForDeliveryStream -> Request ListTagsForDeliveryStream
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 ListTagsForDeliveryStream
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListTagsForDeliveryStream)))
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 ->
          Int -> [Tag] -> Bool -> ListTagsForDeliveryStreamResponse
ListTagsForDeliveryStreamResponse'
            forall (f :: * -> *) a b. Functor 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
"Tags" 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 a
Data..:> Key
"HasMoreTags")
      )

instance Prelude.Hashable ListTagsForDeliveryStream where
  hashWithSalt :: Int -> ListTagsForDeliveryStream -> Int
hashWithSalt Int
_salt ListTagsForDeliveryStream' {Maybe Natural
Maybe Text
Text
deliveryStreamName :: Text
limit :: Maybe Natural
exclusiveStartTagKey :: Maybe Text
$sel:deliveryStreamName:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Text
$sel:limit:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Maybe Natural
$sel:exclusiveStartTagKey:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
exclusiveStartTagKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
deliveryStreamName

instance Prelude.NFData ListTagsForDeliveryStream where
  rnf :: ListTagsForDeliveryStream -> ()
rnf ListTagsForDeliveryStream' {Maybe Natural
Maybe Text
Text
deliveryStreamName :: Text
limit :: Maybe Natural
exclusiveStartTagKey :: Maybe Text
$sel:deliveryStreamName:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Text
$sel:limit:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Maybe Natural
$sel:exclusiveStartTagKey:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
exclusiveStartTagKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
deliveryStreamName

instance Data.ToHeaders ListTagsForDeliveryStream where
  toHeaders :: ListTagsForDeliveryStream -> 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
"Firehose_20150804.ListTagsForDeliveryStream" ::
                          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 ListTagsForDeliveryStream where
  toJSON :: ListTagsForDeliveryStream -> Value
toJSON ListTagsForDeliveryStream' {Maybe Natural
Maybe Text
Text
deliveryStreamName :: Text
limit :: Maybe Natural
exclusiveStartTagKey :: Maybe Text
$sel:deliveryStreamName:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Text
$sel:limit:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Maybe Natural
$sel:exclusiveStartTagKey:ListTagsForDeliveryStream' :: ListTagsForDeliveryStream -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ExclusiveStartTagKey" 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
exclusiveStartTagKey,
            (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,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"DeliveryStreamName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
deliveryStreamName)
          ]
      )

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

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

-- | /See:/ 'newListTagsForDeliveryStreamResponse' smart constructor.
data ListTagsForDeliveryStreamResponse = ListTagsForDeliveryStreamResponse'
  { -- | The response's http status code.
    ListTagsForDeliveryStreamResponse -> Int
httpStatus :: Prelude.Int,
    -- | A list of tags associated with @DeliveryStreamName@, starting with the
    -- first tag after @ExclusiveStartTagKey@ and up to the specified @Limit@.
    ListTagsForDeliveryStreamResponse -> [Tag]
tags :: [Tag],
    -- | If this is @true@ in the response, more tags are available. To list the
    -- remaining tags, set @ExclusiveStartTagKey@ to the key of the last tag
    -- returned and call @ListTagsForDeliveryStream@ again.
    ListTagsForDeliveryStreamResponse -> Bool
hasMoreTags :: Prelude.Bool
  }
  deriving (ListTagsForDeliveryStreamResponse
-> ListTagsForDeliveryStreamResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListTagsForDeliveryStreamResponse
-> ListTagsForDeliveryStreamResponse -> Bool
$c/= :: ListTagsForDeliveryStreamResponse
-> ListTagsForDeliveryStreamResponse -> Bool
== :: ListTagsForDeliveryStreamResponse
-> ListTagsForDeliveryStreamResponse -> Bool
$c== :: ListTagsForDeliveryStreamResponse
-> ListTagsForDeliveryStreamResponse -> Bool
Prelude.Eq, ReadPrec [ListTagsForDeliveryStreamResponse]
ReadPrec ListTagsForDeliveryStreamResponse
Int -> ReadS ListTagsForDeliveryStreamResponse
ReadS [ListTagsForDeliveryStreamResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListTagsForDeliveryStreamResponse]
$creadListPrec :: ReadPrec [ListTagsForDeliveryStreamResponse]
readPrec :: ReadPrec ListTagsForDeliveryStreamResponse
$creadPrec :: ReadPrec ListTagsForDeliveryStreamResponse
readList :: ReadS [ListTagsForDeliveryStreamResponse]
$creadList :: ReadS [ListTagsForDeliveryStreamResponse]
readsPrec :: Int -> ReadS ListTagsForDeliveryStreamResponse
$creadsPrec :: Int -> ReadS ListTagsForDeliveryStreamResponse
Prelude.Read, Int -> ListTagsForDeliveryStreamResponse -> ShowS
[ListTagsForDeliveryStreamResponse] -> ShowS
ListTagsForDeliveryStreamResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListTagsForDeliveryStreamResponse] -> ShowS
$cshowList :: [ListTagsForDeliveryStreamResponse] -> ShowS
show :: ListTagsForDeliveryStreamResponse -> String
$cshow :: ListTagsForDeliveryStreamResponse -> String
showsPrec :: Int -> ListTagsForDeliveryStreamResponse -> ShowS
$cshowsPrec :: Int -> ListTagsForDeliveryStreamResponse -> ShowS
Prelude.Show, forall x.
Rep ListTagsForDeliveryStreamResponse x
-> ListTagsForDeliveryStreamResponse
forall x.
ListTagsForDeliveryStreamResponse
-> Rep ListTagsForDeliveryStreamResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListTagsForDeliveryStreamResponse x
-> ListTagsForDeliveryStreamResponse
$cfrom :: forall x.
ListTagsForDeliveryStreamResponse
-> Rep ListTagsForDeliveryStreamResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListTagsForDeliveryStreamResponse' 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:
--
-- 'httpStatus', 'listTagsForDeliveryStreamResponse_httpStatus' - The response's http status code.
--
-- 'tags', 'listTagsForDeliveryStreamResponse_tags' - A list of tags associated with @DeliveryStreamName@, starting with the
-- first tag after @ExclusiveStartTagKey@ and up to the specified @Limit@.
--
-- 'hasMoreTags', 'listTagsForDeliveryStreamResponse_hasMoreTags' - If this is @true@ in the response, more tags are available. To list the
-- remaining tags, set @ExclusiveStartTagKey@ to the key of the last tag
-- returned and call @ListTagsForDeliveryStream@ again.
newListTagsForDeliveryStreamResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'hasMoreTags'
  Prelude.Bool ->
  ListTagsForDeliveryStreamResponse
newListTagsForDeliveryStreamResponse :: Int -> Bool -> ListTagsForDeliveryStreamResponse
newListTagsForDeliveryStreamResponse
  Int
pHttpStatus_
  Bool
pHasMoreTags_ =
    ListTagsForDeliveryStreamResponse'
      { $sel:httpStatus:ListTagsForDeliveryStreamResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:tags:ListTagsForDeliveryStreamResponse' :: [Tag]
tags = forall a. Monoid a => a
Prelude.mempty,
        $sel:hasMoreTags:ListTagsForDeliveryStreamResponse' :: Bool
hasMoreTags = Bool
pHasMoreTags_
      }

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

-- | A list of tags associated with @DeliveryStreamName@, starting with the
-- first tag after @ExclusiveStartTagKey@ and up to the specified @Limit@.
listTagsForDeliveryStreamResponse_tags :: Lens.Lens' ListTagsForDeliveryStreamResponse [Tag]
listTagsForDeliveryStreamResponse_tags :: Lens' ListTagsForDeliveryStreamResponse [Tag]
listTagsForDeliveryStreamResponse_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTagsForDeliveryStreamResponse' {[Tag]
tags :: [Tag]
$sel:tags:ListTagsForDeliveryStreamResponse' :: ListTagsForDeliveryStreamResponse -> [Tag]
tags} -> [Tag]
tags) (\s :: ListTagsForDeliveryStreamResponse
s@ListTagsForDeliveryStreamResponse' {} [Tag]
a -> ListTagsForDeliveryStreamResponse
s {$sel:tags:ListTagsForDeliveryStreamResponse' :: [Tag]
tags = [Tag]
a} :: ListTagsForDeliveryStreamResponse) 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

-- | If this is @true@ in the response, more tags are available. To list the
-- remaining tags, set @ExclusiveStartTagKey@ to the key of the last tag
-- returned and call @ListTagsForDeliveryStream@ again.
listTagsForDeliveryStreamResponse_hasMoreTags :: Lens.Lens' ListTagsForDeliveryStreamResponse Prelude.Bool
listTagsForDeliveryStreamResponse_hasMoreTags :: Lens' ListTagsForDeliveryStreamResponse Bool
listTagsForDeliveryStreamResponse_hasMoreTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTagsForDeliveryStreamResponse' {Bool
hasMoreTags :: Bool
$sel:hasMoreTags:ListTagsForDeliveryStreamResponse' :: ListTagsForDeliveryStreamResponse -> Bool
hasMoreTags} -> Bool
hasMoreTags) (\s :: ListTagsForDeliveryStreamResponse
s@ListTagsForDeliveryStreamResponse' {} Bool
a -> ListTagsForDeliveryStreamResponse
s {$sel:hasMoreTags:ListTagsForDeliveryStreamResponse' :: Bool
hasMoreTags = Bool
a} :: ListTagsForDeliveryStreamResponse)

instance
  Prelude.NFData
    ListTagsForDeliveryStreamResponse
  where
  rnf :: ListTagsForDeliveryStreamResponse -> ()
rnf ListTagsForDeliveryStreamResponse' {Bool
Int
[Tag]
hasMoreTags :: Bool
tags :: [Tag]
httpStatus :: Int
$sel:hasMoreTags:ListTagsForDeliveryStreamResponse' :: ListTagsForDeliveryStreamResponse -> Bool
$sel:tags:ListTagsForDeliveryStreamResponse' :: ListTagsForDeliveryStreamResponse -> [Tag]
$sel:httpStatus:ListTagsForDeliveryStreamResponse' :: ListTagsForDeliveryStreamResponse -> Int
..} =
    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 [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Bool
hasMoreTags