packages feed

amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsSqsQueueDetails.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.SecurityHub.Types.AwsSqsQueueDetails
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SecurityHub.Types.AwsSqsQueueDetails 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

-- | Data about a queue.
--
-- /See:/ 'newAwsSqsQueueDetails' smart constructor.
data AwsSqsQueueDetails = AwsSqsQueueDetails'
  { -- | The ARN of the dead-letter queue to which Amazon SQS moves messages
    -- after the value of @maxReceiveCount@ is exceeded.
    deadLetterTargetArn :: Prelude.Maybe Prelude.Text,
    -- | The length of time, in seconds, for which Amazon SQS can reuse a data
    -- key to encrypt or decrypt messages before calling KMS again.
    kmsDataKeyReusePeriodSeconds :: Prelude.Maybe Prelude.Int,
    -- | The ID of an Amazon Web Services managed key for Amazon SQS or a custom
    -- KMS key.
    kmsMasterKeyId :: Prelude.Maybe Prelude.Text,
    -- | The name of the new queue.
    queueName :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AwsSqsQueueDetails' 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:
--
-- 'deadLetterTargetArn', 'awsSqsQueueDetails_deadLetterTargetArn' - The ARN of the dead-letter queue to which Amazon SQS moves messages
-- after the value of @maxReceiveCount@ is exceeded.
--
-- 'kmsDataKeyReusePeriodSeconds', 'awsSqsQueueDetails_kmsDataKeyReusePeriodSeconds' - The length of time, in seconds, for which Amazon SQS can reuse a data
-- key to encrypt or decrypt messages before calling KMS again.
--
-- 'kmsMasterKeyId', 'awsSqsQueueDetails_kmsMasterKeyId' - The ID of an Amazon Web Services managed key for Amazon SQS or a custom
-- KMS key.
--
-- 'queueName', 'awsSqsQueueDetails_queueName' - The name of the new queue.
newAwsSqsQueueDetails ::
  AwsSqsQueueDetails
newAwsSqsQueueDetails =
  AwsSqsQueueDetails'
    { deadLetterTargetArn =
        Prelude.Nothing,
      kmsDataKeyReusePeriodSeconds = Prelude.Nothing,
      kmsMasterKeyId = Prelude.Nothing,
      queueName = Prelude.Nothing
    }

-- | The ARN of the dead-letter queue to which Amazon SQS moves messages
-- after the value of @maxReceiveCount@ is exceeded.
awsSqsQueueDetails_deadLetterTargetArn :: Lens.Lens' AwsSqsQueueDetails (Prelude.Maybe Prelude.Text)
awsSqsQueueDetails_deadLetterTargetArn = Lens.lens (\AwsSqsQueueDetails' {deadLetterTargetArn} -> deadLetterTargetArn) (\s@AwsSqsQueueDetails' {} a -> s {deadLetterTargetArn = a} :: AwsSqsQueueDetails)

-- | The length of time, in seconds, for which Amazon SQS can reuse a data
-- key to encrypt or decrypt messages before calling KMS again.
awsSqsQueueDetails_kmsDataKeyReusePeriodSeconds :: Lens.Lens' AwsSqsQueueDetails (Prelude.Maybe Prelude.Int)
awsSqsQueueDetails_kmsDataKeyReusePeriodSeconds = Lens.lens (\AwsSqsQueueDetails' {kmsDataKeyReusePeriodSeconds} -> kmsDataKeyReusePeriodSeconds) (\s@AwsSqsQueueDetails' {} a -> s {kmsDataKeyReusePeriodSeconds = a} :: AwsSqsQueueDetails)

-- | The ID of an Amazon Web Services managed key for Amazon SQS or a custom
-- KMS key.
awsSqsQueueDetails_kmsMasterKeyId :: Lens.Lens' AwsSqsQueueDetails (Prelude.Maybe Prelude.Text)
awsSqsQueueDetails_kmsMasterKeyId = Lens.lens (\AwsSqsQueueDetails' {kmsMasterKeyId} -> kmsMasterKeyId) (\s@AwsSqsQueueDetails' {} a -> s {kmsMasterKeyId = a} :: AwsSqsQueueDetails)

-- | The name of the new queue.
awsSqsQueueDetails_queueName :: Lens.Lens' AwsSqsQueueDetails (Prelude.Maybe Prelude.Text)
awsSqsQueueDetails_queueName = Lens.lens (\AwsSqsQueueDetails' {queueName} -> queueName) (\s@AwsSqsQueueDetails' {} a -> s {queueName = a} :: AwsSqsQueueDetails)

instance Data.FromJSON AwsSqsQueueDetails where
  parseJSON =
    Data.withObject
      "AwsSqsQueueDetails"
      ( \x ->
          AwsSqsQueueDetails'
            Prelude.<$> (x Data..:? "DeadLetterTargetArn")
            Prelude.<*> (x Data..:? "KmsDataKeyReusePeriodSeconds")
            Prelude.<*> (x Data..:? "KmsMasterKeyId")
            Prelude.<*> (x Data..:? "QueueName")
      )

instance Prelude.Hashable AwsSqsQueueDetails where
  hashWithSalt _salt AwsSqsQueueDetails' {..} =
    _salt
      `Prelude.hashWithSalt` deadLetterTargetArn
      `Prelude.hashWithSalt` kmsDataKeyReusePeriodSeconds
      `Prelude.hashWithSalt` kmsMasterKeyId
      `Prelude.hashWithSalt` queueName

instance Prelude.NFData AwsSqsQueueDetails where
  rnf AwsSqsQueueDetails' {..} =
    Prelude.rnf deadLetterTargetArn
      `Prelude.seq` Prelude.rnf kmsDataKeyReusePeriodSeconds
      `Prelude.seq` Prelude.rnf kmsMasterKeyId
      `Prelude.seq` Prelude.rnf queueName

instance Data.ToJSON AwsSqsQueueDetails where
  toJSON AwsSqsQueueDetails' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("DeadLetterTargetArn" Data..=)
              Prelude.<$> deadLetterTargetArn,
            ("KmsDataKeyReusePeriodSeconds" Data..=)
              Prelude.<$> kmsDataKeyReusePeriodSeconds,
            ("KmsMasterKeyId" Data..=)
              Prelude.<$> kmsMasterKeyId,
            ("QueueName" Data..=) Prelude.<$> queueName
          ]
      )