{-# 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.SQS.GetQueueAttributes
-- 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)
--
-- Gets attributes for the specified queue.
--
-- To determine whether a queue is
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html FIFO>,
-- you can check whether @QueueName@ ends with the @.fifo@ suffix.
module Amazonka.SQS.GetQueueAttributes
  ( -- * Creating a Request
    GetQueueAttributes (..),
    newGetQueueAttributes,

    -- * Request Lenses
    getQueueAttributes_attributeNames,
    getQueueAttributes_queueUrl,

    -- * Destructuring the Response
    GetQueueAttributesResponse (..),
    newGetQueueAttributesResponse,

    -- * Response Lenses
    getQueueAttributesResponse_attributes,
    getQueueAttributesResponse_httpStatus,
  )
where

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

-- |
--
-- /See:/ 'newGetQueueAttributes' smart constructor.
data GetQueueAttributes = GetQueueAttributes'
  { -- | A list of attributes for which to retrieve information.
    --
    -- The @AttributeName.N@ parameter is optional, but if you don\'t specify
    -- values for this parameter, the request returns empty results.
    --
    -- In the future, new attributes might be added. If you write code that
    -- calls this action, we recommend that you structure your code so that it
    -- can handle new attributes gracefully.
    --
    -- The following attributes are supported:
    --
    -- The @ApproximateNumberOfMessagesDelayed@,
    -- @ApproximateNumberOfMessagesNotVisible@, and
    -- @ApproximateNumberOfMessagesVisible@ metrics may not achieve consistency
    -- until at least 1 minute after the producers stop sending messages. This
    -- period is required for the queue metadata to reach eventual consistency.
    --
    -- -   @All@ – Returns all values.
    --
    -- -   @ApproximateNumberOfMessages@ – Returns the approximate number of
    --     messages available for retrieval from the queue.
    --
    -- -   @ApproximateNumberOfMessagesDelayed@ – Returns the approximate
    --     number of messages in the queue that are delayed and not available
    --     for reading immediately. This can happen when the queue is
    --     configured as a delay queue or when a message has been sent with a
    --     delay parameter.
    --
    -- -   @ApproximateNumberOfMessagesNotVisible@ – Returns the approximate
    --     number of messages that are in flight. Messages are considered to be
    --     /in flight/ if they have been sent to a client but have not yet been
    --     deleted or have not yet reached the end of their visibility window.
    --
    -- -   @CreatedTimestamp@ – Returns the time when the queue was created in
    --     seconds (<http://en.wikipedia.org/wiki/Unix_time epoch time>).
    --
    -- -   @DelaySeconds@ – Returns the default delay on the queue in seconds.
    --
    -- -   @LastModifiedTimestamp@ – Returns the time when the queue was last
    --     changed in seconds
    --     (<http://en.wikipedia.org/wiki/Unix_time epoch time>).
    --
    -- -   @MaximumMessageSize@ – Returns the limit of how many bytes a message
    --     can contain before Amazon SQS rejects it.
    --
    -- -   @MessageRetentionPeriod@ – Returns the length of time, in seconds,
    --     for which Amazon SQS retains a message.
    --
    -- -   @Policy@ – Returns the policy of the queue.
    --
    -- -   @QueueArn@ – Returns the Amazon resource name (ARN) of the queue.
    --
    -- -   @ReceiveMessageWaitTimeSeconds@ – Returns the length of time, in
    --     seconds, for which the @ReceiveMessage@ action waits for a message
    --     to arrive.
    --
    -- -   @VisibilityTimeout@ – Returns the visibility timeout for the queue.
    --     For more information about the visibility timeout, see
    --     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html Visibility Timeout>
    --     in the /Amazon SQS Developer Guide/.
    --
    -- The following attributes apply only to
    -- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html dead-letter queues:>
    --
    -- -   @RedrivePolicy@ – The string that includes the parameters for the
    --     dead-letter queue functionality of the source queue as a JSON
    --     object. The parameters are as follows:
    --
    --     -   @deadLetterTargetArn@ – The Amazon Resource Name (ARN) of the
    --         dead-letter queue to which Amazon SQS moves messages after the
    --         value of @maxReceiveCount@ is exceeded.
    --
    --     -   @maxReceiveCount@ – The number of times a message is delivered
    --         to the source queue before being moved to the dead-letter queue.
    --         When the @ReceiveCount@ for a message exceeds the
    --         @maxReceiveCount@ for a queue, Amazon SQS moves the message to
    --         the dead-letter-queue.
    --
    -- -   @RedriveAllowPolicy@ – The string that includes the parameters for
    --     the permissions for the dead-letter queue redrive permission and
    --     which source queues can specify dead-letter queues as a JSON object.
    --     The parameters are as follows:
    --
    --     -   @redrivePermission@ – The permission type that defines which
    --         source queues can specify the current queue as the dead-letter
    --         queue. Valid values are:
    --
    --         -   @allowAll@ – (Default) Any source queues in this Amazon Web
    --             Services account in the same Region can specify this queue
    --             as the dead-letter queue.
    --
    --         -   @denyAll@ – No source queues can specify this queue as the
    --             dead-letter queue.
    --
    --         -   @byQueue@ – Only queues specified by the @sourceQueueArns@
    --             parameter can specify this queue as the dead-letter queue.
    --
    --     -   @sourceQueueArns@ – The Amazon Resource Names (ARN)s of the
    --         source queues that can specify this queue as the dead-letter
    --         queue and redrive messages. You can specify this parameter only
    --         when the @redrivePermission@ parameter is set to @byQueue@. You
    --         can specify up to 10 source queue ARNs. To allow more than 10
    --         source queues to specify dead-letter queues, set the
    --         @redrivePermission@ parameter to @allowAll@.
    --
    -- The dead-letter queue of a FIFO queue must also be a FIFO queue.
    -- Similarly, the dead-letter queue of a standard queue must also be a
    -- standard queue.
    --
    -- The following attributes apply only to
    -- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html server-side-encryption>:
    --
    -- -   @KmsMasterKeyId@ – Returns the ID of an Amazon Web Services managed
    --     customer master key (CMK) for Amazon SQS or a custom CMK. For more
    --     information, see
    --     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-sse-key-terms Key Terms>.
    --
    -- -   @KmsDataKeyReusePeriodSeconds@ – Returns the length of time, in
    --     seconds, for which Amazon SQS can reuse a data key to encrypt or
    --     decrypt messages before calling KMS again. For more information, see
    --     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work How Does the Data Key Reuse Period Work?>.
    --
    -- The following attributes apply only to
    -- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html FIFO (first-in-first-out) queues>:
    --
    -- -   @FifoQueue@ – Returns information about whether the queue is FIFO.
    --     For more information, see
    --     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-understanding-logic.html FIFO queue logic>
    --     in the /Amazon SQS Developer Guide/.
    --
    --     To determine whether a queue is
    --     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html FIFO>,
    --     you can check whether @QueueName@ ends with the @.fifo@ suffix.
    --
    -- -   @ContentBasedDeduplication@ – Returns whether content-based
    --     deduplication is enabled for the queue. For more information, see
    --     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html Exactly-once processing>
    --     in the /Amazon SQS Developer Guide/.
    --
    -- The following attributes apply only to
    -- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html high throughput for FIFO queues>:
    --
    -- -   @DeduplicationScope@ – Specifies whether message deduplication
    --     occurs at the message group or queue level. Valid values are
    --     @messageGroup@ and @queue@.
    --
    -- -   @FifoThroughputLimit@ – Specifies whether the FIFO queue throughput
    --     quota applies to the entire queue or per message group. Valid values
    --     are @perQueue@ and @perMessageGroupId@. The @perMessageGroupId@
    --     value is allowed only when the value for @DeduplicationScope@ is
    --     @messageGroup@.
    --
    -- To enable high throughput for FIFO queues, do the following:
    --
    -- -   Set @DeduplicationScope@ to @messageGroup@.
    --
    -- -   Set @FifoThroughputLimit@ to @perMessageGroupId@.
    --
    -- If you set these attributes to anything other than the values shown for
    -- enabling high throughput, normal throughput is in effect and
    -- deduplication occurs as specified.
    --
    -- For information on throughput quotas, see
    -- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html Quotas related to messages>
    -- in the /Amazon SQS Developer Guide/.
    GetQueueAttributes -> Maybe [QueueAttributeName]
attributeNames :: Prelude.Maybe [QueueAttributeName],
    -- | The URL of the Amazon SQS queue whose attribute information is
    -- retrieved.
    --
    -- Queue URLs and names are case-sensitive.
    GetQueueAttributes -> Text
queueUrl :: Prelude.Text
  }
  deriving (GetQueueAttributes -> GetQueueAttributes -> Bool
(GetQueueAttributes -> GetQueueAttributes -> Bool)
-> (GetQueueAttributes -> GetQueueAttributes -> Bool)
-> Eq GetQueueAttributes
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetQueueAttributes -> GetQueueAttributes -> Bool
$c/= :: GetQueueAttributes -> GetQueueAttributes -> Bool
== :: GetQueueAttributes -> GetQueueAttributes -> Bool
$c== :: GetQueueAttributes -> GetQueueAttributes -> Bool
Prelude.Eq, ReadPrec [GetQueueAttributes]
ReadPrec GetQueueAttributes
Int -> ReadS GetQueueAttributes
ReadS [GetQueueAttributes]
(Int -> ReadS GetQueueAttributes)
-> ReadS [GetQueueAttributes]
-> ReadPrec GetQueueAttributes
-> ReadPrec [GetQueueAttributes]
-> Read GetQueueAttributes
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetQueueAttributes]
$creadListPrec :: ReadPrec [GetQueueAttributes]
readPrec :: ReadPrec GetQueueAttributes
$creadPrec :: ReadPrec GetQueueAttributes
readList :: ReadS [GetQueueAttributes]
$creadList :: ReadS [GetQueueAttributes]
readsPrec :: Int -> ReadS GetQueueAttributes
$creadsPrec :: Int -> ReadS GetQueueAttributes
Prelude.Read, Int -> GetQueueAttributes -> ShowS
[GetQueueAttributes] -> ShowS
GetQueueAttributes -> String
(Int -> GetQueueAttributes -> ShowS)
-> (GetQueueAttributes -> String)
-> ([GetQueueAttributes] -> ShowS)
-> Show GetQueueAttributes
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetQueueAttributes] -> ShowS
$cshowList :: [GetQueueAttributes] -> ShowS
show :: GetQueueAttributes -> String
$cshow :: GetQueueAttributes -> String
showsPrec :: Int -> GetQueueAttributes -> ShowS
$cshowsPrec :: Int -> GetQueueAttributes -> ShowS
Prelude.Show, (forall x. GetQueueAttributes -> Rep GetQueueAttributes x)
-> (forall x. Rep GetQueueAttributes x -> GetQueueAttributes)
-> Generic GetQueueAttributes
forall x. Rep GetQueueAttributes x -> GetQueueAttributes
forall x. GetQueueAttributes -> Rep GetQueueAttributes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetQueueAttributes x -> GetQueueAttributes
$cfrom :: forall x. GetQueueAttributes -> Rep GetQueueAttributes x
Prelude.Generic)

-- |
-- Create a value of 'GetQueueAttributes' 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:
--
-- 'attributeNames', 'getQueueAttributes_attributeNames' - A list of attributes for which to retrieve information.
--
-- The @AttributeName.N@ parameter is optional, but if you don\'t specify
-- values for this parameter, the request returns empty results.
--
-- In the future, new attributes might be added. If you write code that
-- calls this action, we recommend that you structure your code so that it
-- can handle new attributes gracefully.
--
-- The following attributes are supported:
--
-- The @ApproximateNumberOfMessagesDelayed@,
-- @ApproximateNumberOfMessagesNotVisible@, and
-- @ApproximateNumberOfMessagesVisible@ metrics may not achieve consistency
-- until at least 1 minute after the producers stop sending messages. This
-- period is required for the queue metadata to reach eventual consistency.
--
-- -   @All@ – Returns all values.
--
-- -   @ApproximateNumberOfMessages@ – Returns the approximate number of
--     messages available for retrieval from the queue.
--
-- -   @ApproximateNumberOfMessagesDelayed@ – Returns the approximate
--     number of messages in the queue that are delayed and not available
--     for reading immediately. This can happen when the queue is
--     configured as a delay queue or when a message has been sent with a
--     delay parameter.
--
-- -   @ApproximateNumberOfMessagesNotVisible@ – Returns the approximate
--     number of messages that are in flight. Messages are considered to be
--     /in flight/ if they have been sent to a client but have not yet been
--     deleted or have not yet reached the end of their visibility window.
--
-- -   @CreatedTimestamp@ – Returns the time when the queue was created in
--     seconds (<http://en.wikipedia.org/wiki/Unix_time epoch time>).
--
-- -   @DelaySeconds@ – Returns the default delay on the queue in seconds.
--
-- -   @LastModifiedTimestamp@ – Returns the time when the queue was last
--     changed in seconds
--     (<http://en.wikipedia.org/wiki/Unix_time epoch time>).
--
-- -   @MaximumMessageSize@ – Returns the limit of how many bytes a message
--     can contain before Amazon SQS rejects it.
--
-- -   @MessageRetentionPeriod@ – Returns the length of time, in seconds,
--     for which Amazon SQS retains a message.
--
-- -   @Policy@ – Returns the policy of the queue.
--
-- -   @QueueArn@ – Returns the Amazon resource name (ARN) of the queue.
--
-- -   @ReceiveMessageWaitTimeSeconds@ – Returns the length of time, in
--     seconds, for which the @ReceiveMessage@ action waits for a message
--     to arrive.
--
-- -   @VisibilityTimeout@ – Returns the visibility timeout for the queue.
--     For more information about the visibility timeout, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html Visibility Timeout>
--     in the /Amazon SQS Developer Guide/.
--
-- The following attributes apply only to
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html dead-letter queues:>
--
-- -   @RedrivePolicy@ – The string that includes the parameters for the
--     dead-letter queue functionality of the source queue as a JSON
--     object. The parameters are as follows:
--
--     -   @deadLetterTargetArn@ – The Amazon Resource Name (ARN) of the
--         dead-letter queue to which Amazon SQS moves messages after the
--         value of @maxReceiveCount@ is exceeded.
--
--     -   @maxReceiveCount@ – The number of times a message is delivered
--         to the source queue before being moved to the dead-letter queue.
--         When the @ReceiveCount@ for a message exceeds the
--         @maxReceiveCount@ for a queue, Amazon SQS moves the message to
--         the dead-letter-queue.
--
-- -   @RedriveAllowPolicy@ – The string that includes the parameters for
--     the permissions for the dead-letter queue redrive permission and
--     which source queues can specify dead-letter queues as a JSON object.
--     The parameters are as follows:
--
--     -   @redrivePermission@ – The permission type that defines which
--         source queues can specify the current queue as the dead-letter
--         queue. Valid values are:
--
--         -   @allowAll@ – (Default) Any source queues in this Amazon Web
--             Services account in the same Region can specify this queue
--             as the dead-letter queue.
--
--         -   @denyAll@ – No source queues can specify this queue as the
--             dead-letter queue.
--
--         -   @byQueue@ – Only queues specified by the @sourceQueueArns@
--             parameter can specify this queue as the dead-letter queue.
--
--     -   @sourceQueueArns@ – The Amazon Resource Names (ARN)s of the
--         source queues that can specify this queue as the dead-letter
--         queue and redrive messages. You can specify this parameter only
--         when the @redrivePermission@ parameter is set to @byQueue@. You
--         can specify up to 10 source queue ARNs. To allow more than 10
--         source queues to specify dead-letter queues, set the
--         @redrivePermission@ parameter to @allowAll@.
--
-- The dead-letter queue of a FIFO queue must also be a FIFO queue.
-- Similarly, the dead-letter queue of a standard queue must also be a
-- standard queue.
--
-- The following attributes apply only to
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html server-side-encryption>:
--
-- -   @KmsMasterKeyId@ – Returns the ID of an Amazon Web Services managed
--     customer master key (CMK) for Amazon SQS or a custom CMK. For more
--     information, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-sse-key-terms Key Terms>.
--
-- -   @KmsDataKeyReusePeriodSeconds@ – Returns the length of time, in
--     seconds, for which Amazon SQS can reuse a data key to encrypt or
--     decrypt messages before calling KMS again. For more information, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work How Does the Data Key Reuse Period Work?>.
--
-- The following attributes apply only to
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html FIFO (first-in-first-out) queues>:
--
-- -   @FifoQueue@ – Returns information about whether the queue is FIFO.
--     For more information, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-understanding-logic.html FIFO queue logic>
--     in the /Amazon SQS Developer Guide/.
--
--     To determine whether a queue is
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html FIFO>,
--     you can check whether @QueueName@ ends with the @.fifo@ suffix.
--
-- -   @ContentBasedDeduplication@ – Returns whether content-based
--     deduplication is enabled for the queue. For more information, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html Exactly-once processing>
--     in the /Amazon SQS Developer Guide/.
--
-- The following attributes apply only to
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html high throughput for FIFO queues>:
--
-- -   @DeduplicationScope@ – Specifies whether message deduplication
--     occurs at the message group or queue level. Valid values are
--     @messageGroup@ and @queue@.
--
-- -   @FifoThroughputLimit@ – Specifies whether the FIFO queue throughput
--     quota applies to the entire queue or per message group. Valid values
--     are @perQueue@ and @perMessageGroupId@. The @perMessageGroupId@
--     value is allowed only when the value for @DeduplicationScope@ is
--     @messageGroup@.
--
-- To enable high throughput for FIFO queues, do the following:
--
-- -   Set @DeduplicationScope@ to @messageGroup@.
--
-- -   Set @FifoThroughputLimit@ to @perMessageGroupId@.
--
-- If you set these attributes to anything other than the values shown for
-- enabling high throughput, normal throughput is in effect and
-- deduplication occurs as specified.
--
-- For information on throughput quotas, see
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html Quotas related to messages>
-- in the /Amazon SQS Developer Guide/.
--
-- 'queueUrl', 'getQueueAttributes_queueUrl' - The URL of the Amazon SQS queue whose attribute information is
-- retrieved.
--
-- Queue URLs and names are case-sensitive.
newGetQueueAttributes ::
  -- | 'queueUrl'
  Prelude.Text ->
  GetQueueAttributes
newGetQueueAttributes :: Text -> GetQueueAttributes
newGetQueueAttributes Text
pQueueUrl_ =
  GetQueueAttributes' :: Maybe [QueueAttributeName] -> Text -> GetQueueAttributes
GetQueueAttributes'
    { $sel:attributeNames:GetQueueAttributes' :: Maybe [QueueAttributeName]
attributeNames =
        Maybe [QueueAttributeName]
forall a. Maybe a
Prelude.Nothing,
      $sel:queueUrl:GetQueueAttributes' :: Text
queueUrl = Text
pQueueUrl_
    }

-- | A list of attributes for which to retrieve information.
--
-- The @AttributeName.N@ parameter is optional, but if you don\'t specify
-- values for this parameter, the request returns empty results.
--
-- In the future, new attributes might be added. If you write code that
-- calls this action, we recommend that you structure your code so that it
-- can handle new attributes gracefully.
--
-- The following attributes are supported:
--
-- The @ApproximateNumberOfMessagesDelayed@,
-- @ApproximateNumberOfMessagesNotVisible@, and
-- @ApproximateNumberOfMessagesVisible@ metrics may not achieve consistency
-- until at least 1 minute after the producers stop sending messages. This
-- period is required for the queue metadata to reach eventual consistency.
--
-- -   @All@ – Returns all values.
--
-- -   @ApproximateNumberOfMessages@ – Returns the approximate number of
--     messages available for retrieval from the queue.
--
-- -   @ApproximateNumberOfMessagesDelayed@ – Returns the approximate
--     number of messages in the queue that are delayed and not available
--     for reading immediately. This can happen when the queue is
--     configured as a delay queue or when a message has been sent with a
--     delay parameter.
--
-- -   @ApproximateNumberOfMessagesNotVisible@ – Returns the approximate
--     number of messages that are in flight. Messages are considered to be
--     /in flight/ if they have been sent to a client but have not yet been
--     deleted or have not yet reached the end of their visibility window.
--
-- -   @CreatedTimestamp@ – Returns the time when the queue was created in
--     seconds (<http://en.wikipedia.org/wiki/Unix_time epoch time>).
--
-- -   @DelaySeconds@ – Returns the default delay on the queue in seconds.
--
-- -   @LastModifiedTimestamp@ – Returns the time when the queue was last
--     changed in seconds
--     (<http://en.wikipedia.org/wiki/Unix_time epoch time>).
--
-- -   @MaximumMessageSize@ – Returns the limit of how many bytes a message
--     can contain before Amazon SQS rejects it.
--
-- -   @MessageRetentionPeriod@ – Returns the length of time, in seconds,
--     for which Amazon SQS retains a message.
--
-- -   @Policy@ – Returns the policy of the queue.
--
-- -   @QueueArn@ – Returns the Amazon resource name (ARN) of the queue.
--
-- -   @ReceiveMessageWaitTimeSeconds@ – Returns the length of time, in
--     seconds, for which the @ReceiveMessage@ action waits for a message
--     to arrive.
--
-- -   @VisibilityTimeout@ – Returns the visibility timeout for the queue.
--     For more information about the visibility timeout, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html Visibility Timeout>
--     in the /Amazon SQS Developer Guide/.
--
-- The following attributes apply only to
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html dead-letter queues:>
--
-- -   @RedrivePolicy@ – The string that includes the parameters for the
--     dead-letter queue functionality of the source queue as a JSON
--     object. The parameters are as follows:
--
--     -   @deadLetterTargetArn@ – The Amazon Resource Name (ARN) of the
--         dead-letter queue to which Amazon SQS moves messages after the
--         value of @maxReceiveCount@ is exceeded.
--
--     -   @maxReceiveCount@ – The number of times a message is delivered
--         to the source queue before being moved to the dead-letter queue.
--         When the @ReceiveCount@ for a message exceeds the
--         @maxReceiveCount@ for a queue, Amazon SQS moves the message to
--         the dead-letter-queue.
--
-- -   @RedriveAllowPolicy@ – The string that includes the parameters for
--     the permissions for the dead-letter queue redrive permission and
--     which source queues can specify dead-letter queues as a JSON object.
--     The parameters are as follows:
--
--     -   @redrivePermission@ – The permission type that defines which
--         source queues can specify the current queue as the dead-letter
--         queue. Valid values are:
--
--         -   @allowAll@ – (Default) Any source queues in this Amazon Web
--             Services account in the same Region can specify this queue
--             as the dead-letter queue.
--
--         -   @denyAll@ – No source queues can specify this queue as the
--             dead-letter queue.
--
--         -   @byQueue@ – Only queues specified by the @sourceQueueArns@
--             parameter can specify this queue as the dead-letter queue.
--
--     -   @sourceQueueArns@ – The Amazon Resource Names (ARN)s of the
--         source queues that can specify this queue as the dead-letter
--         queue and redrive messages. You can specify this parameter only
--         when the @redrivePermission@ parameter is set to @byQueue@. You
--         can specify up to 10 source queue ARNs. To allow more than 10
--         source queues to specify dead-letter queues, set the
--         @redrivePermission@ parameter to @allowAll@.
--
-- The dead-letter queue of a FIFO queue must also be a FIFO queue.
-- Similarly, the dead-letter queue of a standard queue must also be a
-- standard queue.
--
-- The following attributes apply only to
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html server-side-encryption>:
--
-- -   @KmsMasterKeyId@ – Returns the ID of an Amazon Web Services managed
--     customer master key (CMK) for Amazon SQS or a custom CMK. For more
--     information, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-sse-key-terms Key Terms>.
--
-- -   @KmsDataKeyReusePeriodSeconds@ – Returns the length of time, in
--     seconds, for which Amazon SQS can reuse a data key to encrypt or
--     decrypt messages before calling KMS again. For more information, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work How Does the Data Key Reuse Period Work?>.
--
-- The following attributes apply only to
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html FIFO (first-in-first-out) queues>:
--
-- -   @FifoQueue@ – Returns information about whether the queue is FIFO.
--     For more information, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-understanding-logic.html FIFO queue logic>
--     in the /Amazon SQS Developer Guide/.
--
--     To determine whether a queue is
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html FIFO>,
--     you can check whether @QueueName@ ends with the @.fifo@ suffix.
--
-- -   @ContentBasedDeduplication@ – Returns whether content-based
--     deduplication is enabled for the queue. For more information, see
--     <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html Exactly-once processing>
--     in the /Amazon SQS Developer Guide/.
--
-- The following attributes apply only to
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html high throughput for FIFO queues>:
--
-- -   @DeduplicationScope@ – Specifies whether message deduplication
--     occurs at the message group or queue level. Valid values are
--     @messageGroup@ and @queue@.
--
-- -   @FifoThroughputLimit@ – Specifies whether the FIFO queue throughput
--     quota applies to the entire queue or per message group. Valid values
--     are @perQueue@ and @perMessageGroupId@. The @perMessageGroupId@
--     value is allowed only when the value for @DeduplicationScope@ is
--     @messageGroup@.
--
-- To enable high throughput for FIFO queues, do the following:
--
-- -   Set @DeduplicationScope@ to @messageGroup@.
--
-- -   Set @FifoThroughputLimit@ to @perMessageGroupId@.
--
-- If you set these attributes to anything other than the values shown for
-- enabling high throughput, normal throughput is in effect and
-- deduplication occurs as specified.
--
-- For information on throughput quotas, see
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html Quotas related to messages>
-- in the /Amazon SQS Developer Guide/.
getQueueAttributes_attributeNames :: Lens.Lens' GetQueueAttributes (Prelude.Maybe [QueueAttributeName])
getQueueAttributes_attributeNames :: (Maybe [QueueAttributeName] -> f (Maybe [QueueAttributeName]))
-> GetQueueAttributes -> f GetQueueAttributes
getQueueAttributes_attributeNames = (GetQueueAttributes -> Maybe [QueueAttributeName])
-> (GetQueueAttributes
    -> Maybe [QueueAttributeName] -> GetQueueAttributes)
-> Lens
     GetQueueAttributes
     GetQueueAttributes
     (Maybe [QueueAttributeName])
     (Maybe [QueueAttributeName])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetQueueAttributes' {Maybe [QueueAttributeName]
attributeNames :: Maybe [QueueAttributeName]
$sel:attributeNames:GetQueueAttributes' :: GetQueueAttributes -> Maybe [QueueAttributeName]
attributeNames} -> Maybe [QueueAttributeName]
attributeNames) (\s :: GetQueueAttributes
s@GetQueueAttributes' {} Maybe [QueueAttributeName]
a -> GetQueueAttributes
s {$sel:attributeNames:GetQueueAttributes' :: Maybe [QueueAttributeName]
attributeNames = Maybe [QueueAttributeName]
a} :: GetQueueAttributes) ((Maybe [QueueAttributeName] -> f (Maybe [QueueAttributeName]))
 -> GetQueueAttributes -> f GetQueueAttributes)
-> ((Maybe [QueueAttributeName] -> f (Maybe [QueueAttributeName]))
    -> Maybe [QueueAttributeName] -> f (Maybe [QueueAttributeName]))
-> (Maybe [QueueAttributeName] -> f (Maybe [QueueAttributeName]))
-> GetQueueAttributes
-> f GetQueueAttributes
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [QueueAttributeName]
  [QueueAttributeName]
  [QueueAttributeName]
  [QueueAttributeName]
-> Iso
     (Maybe [QueueAttributeName])
     (Maybe [QueueAttributeName])
     (Maybe [QueueAttributeName])
     (Maybe [QueueAttributeName])
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 AnIso
  [QueueAttributeName]
  [QueueAttributeName]
  [QueueAttributeName]
  [QueueAttributeName]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The URL of the Amazon SQS queue whose attribute information is
-- retrieved.
--
-- Queue URLs and names are case-sensitive.
getQueueAttributes_queueUrl :: Lens.Lens' GetQueueAttributes Prelude.Text
getQueueAttributes_queueUrl :: (Text -> f Text) -> GetQueueAttributes -> f GetQueueAttributes
getQueueAttributes_queueUrl = (GetQueueAttributes -> Text)
-> (GetQueueAttributes -> Text -> GetQueueAttributes)
-> Lens GetQueueAttributes GetQueueAttributes Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetQueueAttributes' {Text
queueUrl :: Text
$sel:queueUrl:GetQueueAttributes' :: GetQueueAttributes -> Text
queueUrl} -> Text
queueUrl) (\s :: GetQueueAttributes
s@GetQueueAttributes' {} Text
a -> GetQueueAttributes
s {$sel:queueUrl:GetQueueAttributes' :: Text
queueUrl = Text
a} :: GetQueueAttributes)

instance Core.AWSRequest GetQueueAttributes where
  type
    AWSResponse GetQueueAttributes =
      GetQueueAttributesResponse
  request :: GetQueueAttributes -> Request GetQueueAttributes
request = Service -> GetQueueAttributes -> Request GetQueueAttributes
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery Service
defaultService
  response :: Logger
-> Service
-> Proxy GetQueueAttributes
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetQueueAttributes)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse GetQueueAttributes))
-> Logger
-> Service
-> Proxy GetQueueAttributes
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetQueueAttributes)))
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"GetQueueAttributesResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe (HashMap QueueAttributeName Text)
-> Int -> GetQueueAttributesResponse
GetQueueAttributesResponse'
            (Maybe (HashMap QueueAttributeName Text)
 -> Int -> GetQueueAttributesResponse)
-> Either String (Maybe (HashMap QueueAttributeName Text))
-> Either String (Int -> GetQueueAttributesResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( ([Node] -> Either String (HashMap QueueAttributeName Text))
-> [Node]
-> Either String (Maybe (HashMap QueueAttributeName Text))
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may
                            (Text
-> Text
-> Text
-> [Node]
-> Either String (HashMap QueueAttributeName Text)
forall k v.
(Eq k, Hashable k, FromText k, FromXML v) =>
Text -> Text -> Text -> [Node] -> Either String (HashMap k v)
Core.parseXMLMap Text
"Attribute" Text
"Name" Text
"Value")
                            [Node]
x
                        )
            Either String (Int -> GetQueueAttributesResponse)
-> Either String Int -> Either String GetQueueAttributesResponse
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 GetQueueAttributes

instance Prelude.NFData GetQueueAttributes

instance Core.ToHeaders GetQueueAttributes where
  toHeaders :: GetQueueAttributes -> ResponseHeaders
toHeaders = ResponseHeaders -> GetQueueAttributes -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const ResponseHeaders
forall a. Monoid a => a
Prelude.mempty

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

instance Core.ToQuery GetQueueAttributes where
  toQuery :: GetQueueAttributes -> QueryString
toQuery GetQueueAttributes' {Maybe [QueueAttributeName]
Text
queueUrl :: Text
attributeNames :: Maybe [QueueAttributeName]
$sel:queueUrl:GetQueueAttributes' :: GetQueueAttributes -> Text
$sel:attributeNames:GetQueueAttributes' :: GetQueueAttributes -> Maybe [QueueAttributeName]
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"GetQueueAttributes" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"2012-11-05" :: Prelude.ByteString),
        Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
          ( ByteString -> [QueueAttributeName] -> QueryString
forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Core.toQueryList ByteString
"AttributeName"
              ([QueueAttributeName] -> QueryString)
-> Maybe [QueueAttributeName] -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [QueueAttributeName]
attributeNames
          ),
        ByteString
"QueueUrl" ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Text
queueUrl
      ]

-- | A list of returned queue attributes.
--
-- /See:/ 'newGetQueueAttributesResponse' smart constructor.
data GetQueueAttributesResponse = GetQueueAttributesResponse'
  { -- | A map of attributes to their respective values.
    GetQueueAttributesResponse
-> Maybe (HashMap QueueAttributeName Text)
attributes :: Prelude.Maybe (Prelude.HashMap QueueAttributeName Prelude.Text),
    -- | The response's http status code.
    GetQueueAttributesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetQueueAttributesResponse -> GetQueueAttributesResponse -> Bool
(GetQueueAttributesResponse -> GetQueueAttributesResponse -> Bool)
-> (GetQueueAttributesResponse
    -> GetQueueAttributesResponse -> Bool)
-> Eq GetQueueAttributesResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetQueueAttributesResponse -> GetQueueAttributesResponse -> Bool
$c/= :: GetQueueAttributesResponse -> GetQueueAttributesResponse -> Bool
== :: GetQueueAttributesResponse -> GetQueueAttributesResponse -> Bool
$c== :: GetQueueAttributesResponse -> GetQueueAttributesResponse -> Bool
Prelude.Eq, ReadPrec [GetQueueAttributesResponse]
ReadPrec GetQueueAttributesResponse
Int -> ReadS GetQueueAttributesResponse
ReadS [GetQueueAttributesResponse]
(Int -> ReadS GetQueueAttributesResponse)
-> ReadS [GetQueueAttributesResponse]
-> ReadPrec GetQueueAttributesResponse
-> ReadPrec [GetQueueAttributesResponse]
-> Read GetQueueAttributesResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetQueueAttributesResponse]
$creadListPrec :: ReadPrec [GetQueueAttributesResponse]
readPrec :: ReadPrec GetQueueAttributesResponse
$creadPrec :: ReadPrec GetQueueAttributesResponse
readList :: ReadS [GetQueueAttributesResponse]
$creadList :: ReadS [GetQueueAttributesResponse]
readsPrec :: Int -> ReadS GetQueueAttributesResponse
$creadsPrec :: Int -> ReadS GetQueueAttributesResponse
Prelude.Read, Int -> GetQueueAttributesResponse -> ShowS
[GetQueueAttributesResponse] -> ShowS
GetQueueAttributesResponse -> String
(Int -> GetQueueAttributesResponse -> ShowS)
-> (GetQueueAttributesResponse -> String)
-> ([GetQueueAttributesResponse] -> ShowS)
-> Show GetQueueAttributesResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetQueueAttributesResponse] -> ShowS
$cshowList :: [GetQueueAttributesResponse] -> ShowS
show :: GetQueueAttributesResponse -> String
$cshow :: GetQueueAttributesResponse -> String
showsPrec :: Int -> GetQueueAttributesResponse -> ShowS
$cshowsPrec :: Int -> GetQueueAttributesResponse -> ShowS
Prelude.Show, (forall x.
 GetQueueAttributesResponse -> Rep GetQueueAttributesResponse x)
-> (forall x.
    Rep GetQueueAttributesResponse x -> GetQueueAttributesResponse)
-> Generic GetQueueAttributesResponse
forall x.
Rep GetQueueAttributesResponse x -> GetQueueAttributesResponse
forall x.
GetQueueAttributesResponse -> Rep GetQueueAttributesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetQueueAttributesResponse x -> GetQueueAttributesResponse
$cfrom :: forall x.
GetQueueAttributesResponse -> Rep GetQueueAttributesResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetQueueAttributesResponse' 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:
--
-- 'attributes', 'getQueueAttributesResponse_attributes' - A map of attributes to their respective values.
--
-- 'httpStatus', 'getQueueAttributesResponse_httpStatus' - The response's http status code.
newGetQueueAttributesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetQueueAttributesResponse
newGetQueueAttributesResponse :: Int -> GetQueueAttributesResponse
newGetQueueAttributesResponse Int
pHttpStatus_ =
  GetQueueAttributesResponse' :: Maybe (HashMap QueueAttributeName Text)
-> Int -> GetQueueAttributesResponse
GetQueueAttributesResponse'
    { $sel:attributes:GetQueueAttributesResponse' :: Maybe (HashMap QueueAttributeName Text)
attributes =
        Maybe (HashMap QueueAttributeName Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetQueueAttributesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A map of attributes to their respective values.
getQueueAttributesResponse_attributes :: Lens.Lens' GetQueueAttributesResponse (Prelude.Maybe (Prelude.HashMap QueueAttributeName Prelude.Text))
getQueueAttributesResponse_attributes :: (Maybe (HashMap QueueAttributeName Text)
 -> f (Maybe (HashMap QueueAttributeName Text)))
-> GetQueueAttributesResponse -> f GetQueueAttributesResponse
getQueueAttributesResponse_attributes = (GetQueueAttributesResponse
 -> Maybe (HashMap QueueAttributeName Text))
-> (GetQueueAttributesResponse
    -> Maybe (HashMap QueueAttributeName Text)
    -> GetQueueAttributesResponse)
-> Lens
     GetQueueAttributesResponse
     GetQueueAttributesResponse
     (Maybe (HashMap QueueAttributeName Text))
     (Maybe (HashMap QueueAttributeName Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetQueueAttributesResponse' {Maybe (HashMap QueueAttributeName Text)
attributes :: Maybe (HashMap QueueAttributeName Text)
$sel:attributes:GetQueueAttributesResponse' :: GetQueueAttributesResponse
-> Maybe (HashMap QueueAttributeName Text)
attributes} -> Maybe (HashMap QueueAttributeName Text)
attributes) (\s :: GetQueueAttributesResponse
s@GetQueueAttributesResponse' {} Maybe (HashMap QueueAttributeName Text)
a -> GetQueueAttributesResponse
s {$sel:attributes:GetQueueAttributesResponse' :: Maybe (HashMap QueueAttributeName Text)
attributes = Maybe (HashMap QueueAttributeName Text)
a} :: GetQueueAttributesResponse) ((Maybe (HashMap QueueAttributeName Text)
  -> f (Maybe (HashMap QueueAttributeName Text)))
 -> GetQueueAttributesResponse -> f GetQueueAttributesResponse)
-> ((Maybe (HashMap QueueAttributeName Text)
     -> f (Maybe (HashMap QueueAttributeName Text)))
    -> Maybe (HashMap QueueAttributeName Text)
    -> f (Maybe (HashMap QueueAttributeName Text)))
-> (Maybe (HashMap QueueAttributeName Text)
    -> f (Maybe (HashMap QueueAttributeName Text)))
-> GetQueueAttributesResponse
-> f GetQueueAttributesResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap QueueAttributeName Text)
  (HashMap QueueAttributeName Text)
  (HashMap QueueAttributeName Text)
  (HashMap QueueAttributeName Text)
-> Iso
     (Maybe (HashMap QueueAttributeName Text))
     (Maybe (HashMap QueueAttributeName Text))
     (Maybe (HashMap QueueAttributeName Text))
     (Maybe (HashMap QueueAttributeName Text))
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 AnIso
  (HashMap QueueAttributeName Text)
  (HashMap QueueAttributeName Text)
  (HashMap QueueAttributeName Text)
  (HashMap QueueAttributeName Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance Prelude.NFData GetQueueAttributesResponse