packages feed

amazonka-chime-sdk-media-pipelines-2.0: gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipeline.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.ChimeSdkMediaPipelines.Types.MediaCapturePipeline
-- 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.ChimeSdkMediaPipelines.Types.MediaCapturePipeline where

import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConfiguration
import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSinkType
import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSourceType
import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineStatus
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

-- | A media pipeline object consisting of an ID, source type, source ARN, a
-- sink type, a sink ARN, and a configuration object.
--
-- /See:/ 'newMediaCapturePipeline' smart constructor.
data MediaCapturePipeline = MediaCapturePipeline'
  { -- | The configuration for a specified media pipeline. @SourceType@ must be
    -- @ChimeSdkMeeting@.
    chimeSdkMeetingConfiguration :: Prelude.Maybe ChimeSdkMeetingConfiguration,
    -- | The time at which the pipeline was created, in ISO 8601 format.
    createdTimestamp :: Prelude.Maybe Data.ISO8601,
    -- | The ARN of the media capture pipeline
    mediaPipelineArn :: Prelude.Maybe Prelude.Text,
    -- | The ID of a media pipeline.
    mediaPipelineId :: Prelude.Maybe Prelude.Text,
    -- | ARN of the destination to which the media artifacts are saved.
    sinkArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Destination type to which the media artifacts are saved. You must use an
    -- S3 Bucket.
    sinkType :: Prelude.Maybe MediaPipelineSinkType,
    -- | ARN of the source from which the media artifacts are saved.
    sourceArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Source type from which media artifacts are saved. You must use
    -- @ChimeMeeting@.
    sourceType :: Prelude.Maybe MediaPipelineSourceType,
    -- | The status of the media pipeline.
    status :: Prelude.Maybe MediaPipelineStatus,
    -- | The time at which the pipeline was updated, in ISO 8601 format.
    updatedTimestamp :: Prelude.Maybe Data.ISO8601
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'MediaCapturePipeline' 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:
--
-- 'chimeSdkMeetingConfiguration', 'mediaCapturePipeline_chimeSdkMeetingConfiguration' - The configuration for a specified media pipeline. @SourceType@ must be
-- @ChimeSdkMeeting@.
--
-- 'createdTimestamp', 'mediaCapturePipeline_createdTimestamp' - The time at which the pipeline was created, in ISO 8601 format.
--
-- 'mediaPipelineArn', 'mediaCapturePipeline_mediaPipelineArn' - The ARN of the media capture pipeline
--
-- 'mediaPipelineId', 'mediaCapturePipeline_mediaPipelineId' - The ID of a media pipeline.
--
-- 'sinkArn', 'mediaCapturePipeline_sinkArn' - ARN of the destination to which the media artifacts are saved.
--
-- 'sinkType', 'mediaCapturePipeline_sinkType' - Destination type to which the media artifacts are saved. You must use an
-- S3 Bucket.
--
-- 'sourceArn', 'mediaCapturePipeline_sourceArn' - ARN of the source from which the media artifacts are saved.
--
-- 'sourceType', 'mediaCapturePipeline_sourceType' - Source type from which media artifacts are saved. You must use
-- @ChimeMeeting@.
--
-- 'status', 'mediaCapturePipeline_status' - The status of the media pipeline.
--
-- 'updatedTimestamp', 'mediaCapturePipeline_updatedTimestamp' - The time at which the pipeline was updated, in ISO 8601 format.
newMediaCapturePipeline ::
  MediaCapturePipeline
newMediaCapturePipeline =
  MediaCapturePipeline'
    { chimeSdkMeetingConfiguration =
        Prelude.Nothing,
      createdTimestamp = Prelude.Nothing,
      mediaPipelineArn = Prelude.Nothing,
      mediaPipelineId = Prelude.Nothing,
      sinkArn = Prelude.Nothing,
      sinkType = Prelude.Nothing,
      sourceArn = Prelude.Nothing,
      sourceType = Prelude.Nothing,
      status = Prelude.Nothing,
      updatedTimestamp = Prelude.Nothing
    }

-- | The configuration for a specified media pipeline. @SourceType@ must be
-- @ChimeSdkMeeting@.
mediaCapturePipeline_chimeSdkMeetingConfiguration :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe ChimeSdkMeetingConfiguration)
mediaCapturePipeline_chimeSdkMeetingConfiguration = Lens.lens (\MediaCapturePipeline' {chimeSdkMeetingConfiguration} -> chimeSdkMeetingConfiguration) (\s@MediaCapturePipeline' {} a -> s {chimeSdkMeetingConfiguration = a} :: MediaCapturePipeline)

-- | The time at which the pipeline was created, in ISO 8601 format.
mediaCapturePipeline_createdTimestamp :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.UTCTime)
mediaCapturePipeline_createdTimestamp = Lens.lens (\MediaCapturePipeline' {createdTimestamp} -> createdTimestamp) (\s@MediaCapturePipeline' {} a -> s {createdTimestamp = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Time

-- | The ARN of the media capture pipeline
mediaCapturePipeline_mediaPipelineArn :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
mediaCapturePipeline_mediaPipelineArn = Lens.lens (\MediaCapturePipeline' {mediaPipelineArn} -> mediaPipelineArn) (\s@MediaCapturePipeline' {} a -> s {mediaPipelineArn = a} :: MediaCapturePipeline)

-- | The ID of a media pipeline.
mediaCapturePipeline_mediaPipelineId :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
mediaCapturePipeline_mediaPipelineId = Lens.lens (\MediaCapturePipeline' {mediaPipelineId} -> mediaPipelineId) (\s@MediaCapturePipeline' {} a -> s {mediaPipelineId = a} :: MediaCapturePipeline)

-- | ARN of the destination to which the media artifacts are saved.
mediaCapturePipeline_sinkArn :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
mediaCapturePipeline_sinkArn = Lens.lens (\MediaCapturePipeline' {sinkArn} -> sinkArn) (\s@MediaCapturePipeline' {} a -> s {sinkArn = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Sensitive

-- | Destination type to which the media artifacts are saved. You must use an
-- S3 Bucket.
mediaCapturePipeline_sinkType :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineSinkType)
mediaCapturePipeline_sinkType = Lens.lens (\MediaCapturePipeline' {sinkType} -> sinkType) (\s@MediaCapturePipeline' {} a -> s {sinkType = a} :: MediaCapturePipeline)

-- | ARN of the source from which the media artifacts are saved.
mediaCapturePipeline_sourceArn :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
mediaCapturePipeline_sourceArn = Lens.lens (\MediaCapturePipeline' {sourceArn} -> sourceArn) (\s@MediaCapturePipeline' {} a -> s {sourceArn = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Sensitive

-- | Source type from which media artifacts are saved. You must use
-- @ChimeMeeting@.
mediaCapturePipeline_sourceType :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineSourceType)
mediaCapturePipeline_sourceType = Lens.lens (\MediaCapturePipeline' {sourceType} -> sourceType) (\s@MediaCapturePipeline' {} a -> s {sourceType = a} :: MediaCapturePipeline)

-- | The status of the media pipeline.
mediaCapturePipeline_status :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineStatus)
mediaCapturePipeline_status = Lens.lens (\MediaCapturePipeline' {status} -> status) (\s@MediaCapturePipeline' {} a -> s {status = a} :: MediaCapturePipeline)

-- | The time at which the pipeline was updated, in ISO 8601 format.
mediaCapturePipeline_updatedTimestamp :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.UTCTime)
mediaCapturePipeline_updatedTimestamp = Lens.lens (\MediaCapturePipeline' {updatedTimestamp} -> updatedTimestamp) (\s@MediaCapturePipeline' {} a -> s {updatedTimestamp = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Time

instance Data.FromJSON MediaCapturePipeline where
  parseJSON =
    Data.withObject
      "MediaCapturePipeline"
      ( \x ->
          MediaCapturePipeline'
            Prelude.<$> (x Data..:? "ChimeSdkMeetingConfiguration")
            Prelude.<*> (x Data..:? "CreatedTimestamp")
            Prelude.<*> (x Data..:? "MediaPipelineArn")
            Prelude.<*> (x Data..:? "MediaPipelineId")
            Prelude.<*> (x Data..:? "SinkArn")
            Prelude.<*> (x Data..:? "SinkType")
            Prelude.<*> (x Data..:? "SourceArn")
            Prelude.<*> (x Data..:? "SourceType")
            Prelude.<*> (x Data..:? "Status")
            Prelude.<*> (x Data..:? "UpdatedTimestamp")
      )

instance Prelude.Hashable MediaCapturePipeline where
  hashWithSalt _salt MediaCapturePipeline' {..} =
    _salt
      `Prelude.hashWithSalt` chimeSdkMeetingConfiguration
      `Prelude.hashWithSalt` createdTimestamp
      `Prelude.hashWithSalt` mediaPipelineArn
      `Prelude.hashWithSalt` mediaPipelineId
      `Prelude.hashWithSalt` sinkArn
      `Prelude.hashWithSalt` sinkType
      `Prelude.hashWithSalt` sourceArn
      `Prelude.hashWithSalt` sourceType
      `Prelude.hashWithSalt` status
      `Prelude.hashWithSalt` updatedTimestamp

instance Prelude.NFData MediaCapturePipeline where
  rnf MediaCapturePipeline' {..} =
    Prelude.rnf chimeSdkMeetingConfiguration
      `Prelude.seq` Prelude.rnf createdTimestamp
      `Prelude.seq` Prelude.rnf mediaPipelineArn
      `Prelude.seq` Prelude.rnf mediaPipelineId
      `Prelude.seq` Prelude.rnf sinkArn
      `Prelude.seq` Prelude.rnf sinkType
      `Prelude.seq` Prelude.rnf sourceArn
      `Prelude.seq` Prelude.rnf sourceType
      `Prelude.seq` Prelude.rnf status
      `Prelude.seq` Prelude.rnf updatedTimestamp