packages feed

amazonka-kinesis-firehose-2.0: gen/Amazonka/Firehose/DescribeDeliveryStream.hs

{-# 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.DescribeDeliveryStream
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the specified delivery stream and its status. For example,
-- after your delivery stream is created, call @DescribeDeliveryStream@ to
-- see whether the delivery stream is @ACTIVE@ and therefore ready for data
-- to be sent to it.
--
-- If the status of a delivery stream is @CREATING_FAILED@, this status
-- doesn\'t change, and you can\'t invoke CreateDeliveryStream again on it.
-- However, you can invoke the DeleteDeliveryStream operation to delete it.
-- If the status is @DELETING_FAILED@, you can force deletion by invoking
-- DeleteDeliveryStream again but with
-- DeleteDeliveryStreamInput$AllowForceDelete set to true.
module Amazonka.Firehose.DescribeDeliveryStream
  ( -- * Creating a Request
    DescribeDeliveryStream (..),
    newDescribeDeliveryStream,

    -- * Request Lenses
    describeDeliveryStream_exclusiveStartDestinationId,
    describeDeliveryStream_limit,
    describeDeliveryStream_deliveryStreamName,

    -- * Destructuring the Response
    DescribeDeliveryStreamResponse (..),
    newDescribeDeliveryStreamResponse,

    -- * Response Lenses
    describeDeliveryStreamResponse_httpStatus,
    describeDeliveryStreamResponse_deliveryStreamDescription,
  )
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:/ 'newDescribeDeliveryStream' smart constructor.
data DescribeDeliveryStream = DescribeDeliveryStream'
  { -- | The ID of the destination to start returning the destination
    -- information. Kinesis Data Firehose supports one destination per delivery
    -- stream.
    exclusiveStartDestinationId :: Prelude.Maybe Prelude.Text,
    -- | The limit on the number of destinations to return. You can have one
    -- destination per delivery stream.
    limit :: Prelude.Maybe Prelude.Natural,
    -- | The name of the delivery stream.
    deliveryStreamName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeDeliveryStream' 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:
--
-- 'exclusiveStartDestinationId', 'describeDeliveryStream_exclusiveStartDestinationId' - The ID of the destination to start returning the destination
-- information. Kinesis Data Firehose supports one destination per delivery
-- stream.
--
-- 'limit', 'describeDeliveryStream_limit' - The limit on the number of destinations to return. You can have one
-- destination per delivery stream.
--
-- 'deliveryStreamName', 'describeDeliveryStream_deliveryStreamName' - The name of the delivery stream.
newDescribeDeliveryStream ::
  -- | 'deliveryStreamName'
  Prelude.Text ->
  DescribeDeliveryStream
newDescribeDeliveryStream pDeliveryStreamName_ =
  DescribeDeliveryStream'
    { exclusiveStartDestinationId =
        Prelude.Nothing,
      limit = Prelude.Nothing,
      deliveryStreamName = pDeliveryStreamName_
    }

-- | The ID of the destination to start returning the destination
-- information. Kinesis Data Firehose supports one destination per delivery
-- stream.
describeDeliveryStream_exclusiveStartDestinationId :: Lens.Lens' DescribeDeliveryStream (Prelude.Maybe Prelude.Text)
describeDeliveryStream_exclusiveStartDestinationId = Lens.lens (\DescribeDeliveryStream' {exclusiveStartDestinationId} -> exclusiveStartDestinationId) (\s@DescribeDeliveryStream' {} a -> s {exclusiveStartDestinationId = a} :: DescribeDeliveryStream)

-- | The limit on the number of destinations to return. You can have one
-- destination per delivery stream.
describeDeliveryStream_limit :: Lens.Lens' DescribeDeliveryStream (Prelude.Maybe Prelude.Natural)
describeDeliveryStream_limit = Lens.lens (\DescribeDeliveryStream' {limit} -> limit) (\s@DescribeDeliveryStream' {} a -> s {limit = a} :: DescribeDeliveryStream)

-- | The name of the delivery stream.
describeDeliveryStream_deliveryStreamName :: Lens.Lens' DescribeDeliveryStream Prelude.Text
describeDeliveryStream_deliveryStreamName = Lens.lens (\DescribeDeliveryStream' {deliveryStreamName} -> deliveryStreamName) (\s@DescribeDeliveryStream' {} a -> s {deliveryStreamName = a} :: DescribeDeliveryStream)

instance Core.AWSRequest DescribeDeliveryStream where
  type
    AWSResponse DescribeDeliveryStream =
      DescribeDeliveryStreamResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DescribeDeliveryStreamResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (x Data..:> "DeliveryStreamDescription")
      )

instance Prelude.Hashable DescribeDeliveryStream where
  hashWithSalt _salt DescribeDeliveryStream' {..} =
    _salt
      `Prelude.hashWithSalt` exclusiveStartDestinationId
      `Prelude.hashWithSalt` limit
      `Prelude.hashWithSalt` deliveryStreamName

instance Prelude.NFData DescribeDeliveryStream where
  rnf DescribeDeliveryStream' {..} =
    Prelude.rnf exclusiveStartDestinationId
      `Prelude.seq` Prelude.rnf limit
      `Prelude.seq` Prelude.rnf deliveryStreamName

instance Data.ToHeaders DescribeDeliveryStream where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "Firehose_20150804.DescribeDeliveryStream" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeDeliveryStream where
  toJSON DescribeDeliveryStream' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("ExclusiveStartDestinationId" Data..=)
              Prelude.<$> exclusiveStartDestinationId,
            ("Limit" Data..=) Prelude.<$> limit,
            Prelude.Just
              ("DeliveryStreamName" Data..= deliveryStreamName)
          ]
      )

instance Data.ToPath DescribeDeliveryStream where
  toPath = Prelude.const "/"

instance Data.ToQuery DescribeDeliveryStream where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newDescribeDeliveryStreamResponse' smart constructor.
data DescribeDeliveryStreamResponse = DescribeDeliveryStreamResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | Information about the delivery stream.
    deliveryStreamDescription :: DeliveryStreamDescription
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeDeliveryStreamResponse' 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', 'describeDeliveryStreamResponse_httpStatus' - The response's http status code.
--
-- 'deliveryStreamDescription', 'describeDeliveryStreamResponse_deliveryStreamDescription' - Information about the delivery stream.
newDescribeDeliveryStreamResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'deliveryStreamDescription'
  DeliveryStreamDescription ->
  DescribeDeliveryStreamResponse
newDescribeDeliveryStreamResponse
  pHttpStatus_
  pDeliveryStreamDescription_ =
    DescribeDeliveryStreamResponse'
      { httpStatus =
          pHttpStatus_,
        deliveryStreamDescription =
          pDeliveryStreamDescription_
      }

-- | The response's http status code.
describeDeliveryStreamResponse_httpStatus :: Lens.Lens' DescribeDeliveryStreamResponse Prelude.Int
describeDeliveryStreamResponse_httpStatus = Lens.lens (\DescribeDeliveryStreamResponse' {httpStatus} -> httpStatus) (\s@DescribeDeliveryStreamResponse' {} a -> s {httpStatus = a} :: DescribeDeliveryStreamResponse)

-- | Information about the delivery stream.
describeDeliveryStreamResponse_deliveryStreamDescription :: Lens.Lens' DescribeDeliveryStreamResponse DeliveryStreamDescription
describeDeliveryStreamResponse_deliveryStreamDescription = Lens.lens (\DescribeDeliveryStreamResponse' {deliveryStreamDescription} -> deliveryStreamDescription) (\s@DescribeDeliveryStreamResponse' {} a -> s {deliveryStreamDescription = a} :: DescribeDeliveryStreamResponse)

instance
  Prelude.NFData
    DescribeDeliveryStreamResponse
  where
  rnf DescribeDeliveryStreamResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf deliveryStreamDescription