packages feed

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

import Amazonka.ChimeSdkMediaPipelines.Types.AudioConcatenationConfiguration
import Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoConcatenationConfiguration
import Amazonka.ChimeSdkMediaPipelines.Types.ContentConcatenationConfiguration
import Amazonka.ChimeSdkMediaPipelines.Types.DataChannelConcatenationConfiguration
import Amazonka.ChimeSdkMediaPipelines.Types.MeetingEventsConcatenationConfiguration
import Amazonka.ChimeSdkMediaPipelines.Types.TranscriptionMessagesConcatenationConfiguration
import Amazonka.ChimeSdkMediaPipelines.Types.VideoConcatenationConfiguration
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

-- | The configuration for the artifacts concatenation.
--
-- /See:/ 'newArtifactsConcatenationConfiguration' smart constructor.
data ArtifactsConcatenationConfiguration = ArtifactsConcatenationConfiguration'
  { -- | The configuration for the audio artifacts concatenation.
    audio :: AudioConcatenationConfiguration,
    -- | The configuration for the video artifacts concatenation.
    video :: VideoConcatenationConfiguration,
    -- | The configuration for the content artifacts concatenation.
    content :: ContentConcatenationConfiguration,
    -- | The configuration for the data channel artifacts concatenation.
    dataChannel :: DataChannelConcatenationConfiguration,
    -- | The configuration for the transcription messages artifacts
    -- concatenation.
    transcriptionMessages :: TranscriptionMessagesConcatenationConfiguration,
    -- | The configuration for the meeting events artifacts concatenation.
    meetingEvents :: MeetingEventsConcatenationConfiguration,
    -- | The configuration for the composited video artifacts concatenation.
    compositedVideo :: CompositedVideoConcatenationConfiguration
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ArtifactsConcatenationConfiguration' 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:
--
-- 'audio', 'artifactsConcatenationConfiguration_audio' - The configuration for the audio artifacts concatenation.
--
-- 'video', 'artifactsConcatenationConfiguration_video' - The configuration for the video artifacts concatenation.
--
-- 'content', 'artifactsConcatenationConfiguration_content' - The configuration for the content artifacts concatenation.
--
-- 'dataChannel', 'artifactsConcatenationConfiguration_dataChannel' - The configuration for the data channel artifacts concatenation.
--
-- 'transcriptionMessages', 'artifactsConcatenationConfiguration_transcriptionMessages' - The configuration for the transcription messages artifacts
-- concatenation.
--
-- 'meetingEvents', 'artifactsConcatenationConfiguration_meetingEvents' - The configuration for the meeting events artifacts concatenation.
--
-- 'compositedVideo', 'artifactsConcatenationConfiguration_compositedVideo' - The configuration for the composited video artifacts concatenation.
newArtifactsConcatenationConfiguration ::
  -- | 'audio'
  AudioConcatenationConfiguration ->
  -- | 'video'
  VideoConcatenationConfiguration ->
  -- | 'content'
  ContentConcatenationConfiguration ->
  -- | 'dataChannel'
  DataChannelConcatenationConfiguration ->
  -- | 'transcriptionMessages'
  TranscriptionMessagesConcatenationConfiguration ->
  -- | 'meetingEvents'
  MeetingEventsConcatenationConfiguration ->
  -- | 'compositedVideo'
  CompositedVideoConcatenationConfiguration ->
  ArtifactsConcatenationConfiguration
newArtifactsConcatenationConfiguration
  pAudio_
  pVideo_
  pContent_
  pDataChannel_
  pTranscriptionMessages_
  pMeetingEvents_
  pCompositedVideo_ =
    ArtifactsConcatenationConfiguration'
      { audio =
          pAudio_,
        video = pVideo_,
        content = pContent_,
        dataChannel = pDataChannel_,
        transcriptionMessages =
          pTranscriptionMessages_,
        meetingEvents = pMeetingEvents_,
        compositedVideo = pCompositedVideo_
      }

-- | The configuration for the audio artifacts concatenation.
artifactsConcatenationConfiguration_audio :: Lens.Lens' ArtifactsConcatenationConfiguration AudioConcatenationConfiguration
artifactsConcatenationConfiguration_audio = Lens.lens (\ArtifactsConcatenationConfiguration' {audio} -> audio) (\s@ArtifactsConcatenationConfiguration' {} a -> s {audio = a} :: ArtifactsConcatenationConfiguration)

-- | The configuration for the video artifacts concatenation.
artifactsConcatenationConfiguration_video :: Lens.Lens' ArtifactsConcatenationConfiguration VideoConcatenationConfiguration
artifactsConcatenationConfiguration_video = Lens.lens (\ArtifactsConcatenationConfiguration' {video} -> video) (\s@ArtifactsConcatenationConfiguration' {} a -> s {video = a} :: ArtifactsConcatenationConfiguration)

-- | The configuration for the content artifacts concatenation.
artifactsConcatenationConfiguration_content :: Lens.Lens' ArtifactsConcatenationConfiguration ContentConcatenationConfiguration
artifactsConcatenationConfiguration_content = Lens.lens (\ArtifactsConcatenationConfiguration' {content} -> content) (\s@ArtifactsConcatenationConfiguration' {} a -> s {content = a} :: ArtifactsConcatenationConfiguration)

-- | The configuration for the data channel artifacts concatenation.
artifactsConcatenationConfiguration_dataChannel :: Lens.Lens' ArtifactsConcatenationConfiguration DataChannelConcatenationConfiguration
artifactsConcatenationConfiguration_dataChannel = Lens.lens (\ArtifactsConcatenationConfiguration' {dataChannel} -> dataChannel) (\s@ArtifactsConcatenationConfiguration' {} a -> s {dataChannel = a} :: ArtifactsConcatenationConfiguration)

-- | The configuration for the transcription messages artifacts
-- concatenation.
artifactsConcatenationConfiguration_transcriptionMessages :: Lens.Lens' ArtifactsConcatenationConfiguration TranscriptionMessagesConcatenationConfiguration
artifactsConcatenationConfiguration_transcriptionMessages = Lens.lens (\ArtifactsConcatenationConfiguration' {transcriptionMessages} -> transcriptionMessages) (\s@ArtifactsConcatenationConfiguration' {} a -> s {transcriptionMessages = a} :: ArtifactsConcatenationConfiguration)

-- | The configuration for the meeting events artifacts concatenation.
artifactsConcatenationConfiguration_meetingEvents :: Lens.Lens' ArtifactsConcatenationConfiguration MeetingEventsConcatenationConfiguration
artifactsConcatenationConfiguration_meetingEvents = Lens.lens (\ArtifactsConcatenationConfiguration' {meetingEvents} -> meetingEvents) (\s@ArtifactsConcatenationConfiguration' {} a -> s {meetingEvents = a} :: ArtifactsConcatenationConfiguration)

-- | The configuration for the composited video artifacts concatenation.
artifactsConcatenationConfiguration_compositedVideo :: Lens.Lens' ArtifactsConcatenationConfiguration CompositedVideoConcatenationConfiguration
artifactsConcatenationConfiguration_compositedVideo = Lens.lens (\ArtifactsConcatenationConfiguration' {compositedVideo} -> compositedVideo) (\s@ArtifactsConcatenationConfiguration' {} a -> s {compositedVideo = a} :: ArtifactsConcatenationConfiguration)

instance
  Data.FromJSON
    ArtifactsConcatenationConfiguration
  where
  parseJSON =
    Data.withObject
      "ArtifactsConcatenationConfiguration"
      ( \x ->
          ArtifactsConcatenationConfiguration'
            Prelude.<$> (x Data..: "Audio")
            Prelude.<*> (x Data..: "Video")
            Prelude.<*> (x Data..: "Content")
            Prelude.<*> (x Data..: "DataChannel")
            Prelude.<*> (x Data..: "TranscriptionMessages")
            Prelude.<*> (x Data..: "MeetingEvents")
            Prelude.<*> (x Data..: "CompositedVideo")
      )

instance
  Prelude.Hashable
    ArtifactsConcatenationConfiguration
  where
  hashWithSalt
    _salt
    ArtifactsConcatenationConfiguration' {..} =
      _salt
        `Prelude.hashWithSalt` audio
        `Prelude.hashWithSalt` video
        `Prelude.hashWithSalt` content
        `Prelude.hashWithSalt` dataChannel
        `Prelude.hashWithSalt` transcriptionMessages
        `Prelude.hashWithSalt` meetingEvents
        `Prelude.hashWithSalt` compositedVideo

instance
  Prelude.NFData
    ArtifactsConcatenationConfiguration
  where
  rnf ArtifactsConcatenationConfiguration' {..} =
    Prelude.rnf audio
      `Prelude.seq` Prelude.rnf video
      `Prelude.seq` Prelude.rnf content
      `Prelude.seq` Prelude.rnf dataChannel
      `Prelude.seq` Prelude.rnf transcriptionMessages
      `Prelude.seq` Prelude.rnf meetingEvents
      `Prelude.seq` Prelude.rnf compositedVideo

instance
  Data.ToJSON
    ArtifactsConcatenationConfiguration
  where
  toJSON ArtifactsConcatenationConfiguration' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just ("Audio" Data..= audio),
            Prelude.Just ("Video" Data..= video),
            Prelude.Just ("Content" Data..= content),
            Prelude.Just ("DataChannel" Data..= dataChannel),
            Prelude.Just
              ( "TranscriptionMessages"
                  Data..= transcriptionMessages
              ),
            Prelude.Just ("MeetingEvents" Data..= meetingEvents),
            Prelude.Just
              ("CompositedVideo" Data..= compositedVideo)
          ]
      )