packages feed

amazonka-medialive-2.0: gen/Amazonka/MediaLive/Types/OutputSettings.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.MediaLive.Types.OutputSettings
-- 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.MediaLive.Types.OutputSettings where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MediaLive.Types.ArchiveOutputSettings
import Amazonka.MediaLive.Types.FrameCaptureOutputSettings
import Amazonka.MediaLive.Types.HlsOutputSettings
import Amazonka.MediaLive.Types.MediaPackageOutputSettings
import Amazonka.MediaLive.Types.MsSmoothOutputSettings
import Amazonka.MediaLive.Types.MultiplexOutputSettings
import Amazonka.MediaLive.Types.RtmpOutputSettings
import Amazonka.MediaLive.Types.UdpOutputSettings
import qualified Amazonka.Prelude as Prelude

-- | Output Settings
--
-- /See:/ 'newOutputSettings' smart constructor.
data OutputSettings = OutputSettings'
  { archiveOutputSettings :: Prelude.Maybe ArchiveOutputSettings,
    frameCaptureOutputSettings :: Prelude.Maybe FrameCaptureOutputSettings,
    hlsOutputSettings :: Prelude.Maybe HlsOutputSettings,
    mediaPackageOutputSettings :: Prelude.Maybe MediaPackageOutputSettings,
    msSmoothOutputSettings :: Prelude.Maybe MsSmoothOutputSettings,
    multiplexOutputSettings :: Prelude.Maybe MultiplexOutputSettings,
    rtmpOutputSettings :: Prelude.Maybe RtmpOutputSettings,
    udpOutputSettings :: Prelude.Maybe UdpOutputSettings
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'OutputSettings' 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:
--
-- 'archiveOutputSettings', 'outputSettings_archiveOutputSettings' - Undocumented member.
--
-- 'frameCaptureOutputSettings', 'outputSettings_frameCaptureOutputSettings' - Undocumented member.
--
-- 'hlsOutputSettings', 'outputSettings_hlsOutputSettings' - Undocumented member.
--
-- 'mediaPackageOutputSettings', 'outputSettings_mediaPackageOutputSettings' - Undocumented member.
--
-- 'msSmoothOutputSettings', 'outputSettings_msSmoothOutputSettings' - Undocumented member.
--
-- 'multiplexOutputSettings', 'outputSettings_multiplexOutputSettings' - Undocumented member.
--
-- 'rtmpOutputSettings', 'outputSettings_rtmpOutputSettings' - Undocumented member.
--
-- 'udpOutputSettings', 'outputSettings_udpOutputSettings' - Undocumented member.
newOutputSettings ::
  OutputSettings
newOutputSettings =
  OutputSettings'
    { archiveOutputSettings =
        Prelude.Nothing,
      frameCaptureOutputSettings = Prelude.Nothing,
      hlsOutputSettings = Prelude.Nothing,
      mediaPackageOutputSettings = Prelude.Nothing,
      msSmoothOutputSettings = Prelude.Nothing,
      multiplexOutputSettings = Prelude.Nothing,
      rtmpOutputSettings = Prelude.Nothing,
      udpOutputSettings = Prelude.Nothing
    }

-- | Undocumented member.
outputSettings_archiveOutputSettings :: Lens.Lens' OutputSettings (Prelude.Maybe ArchiveOutputSettings)
outputSettings_archiveOutputSettings = Lens.lens (\OutputSettings' {archiveOutputSettings} -> archiveOutputSettings) (\s@OutputSettings' {} a -> s {archiveOutputSettings = a} :: OutputSettings)

-- | Undocumented member.
outputSettings_frameCaptureOutputSettings :: Lens.Lens' OutputSettings (Prelude.Maybe FrameCaptureOutputSettings)
outputSettings_frameCaptureOutputSettings = Lens.lens (\OutputSettings' {frameCaptureOutputSettings} -> frameCaptureOutputSettings) (\s@OutputSettings' {} a -> s {frameCaptureOutputSettings = a} :: OutputSettings)

-- | Undocumented member.
outputSettings_hlsOutputSettings :: Lens.Lens' OutputSettings (Prelude.Maybe HlsOutputSettings)
outputSettings_hlsOutputSettings = Lens.lens (\OutputSettings' {hlsOutputSettings} -> hlsOutputSettings) (\s@OutputSettings' {} a -> s {hlsOutputSettings = a} :: OutputSettings)

-- | Undocumented member.
outputSettings_mediaPackageOutputSettings :: Lens.Lens' OutputSettings (Prelude.Maybe MediaPackageOutputSettings)
outputSettings_mediaPackageOutputSettings = Lens.lens (\OutputSettings' {mediaPackageOutputSettings} -> mediaPackageOutputSettings) (\s@OutputSettings' {} a -> s {mediaPackageOutputSettings = a} :: OutputSettings)

-- | Undocumented member.
outputSettings_msSmoothOutputSettings :: Lens.Lens' OutputSettings (Prelude.Maybe MsSmoothOutputSettings)
outputSettings_msSmoothOutputSettings = Lens.lens (\OutputSettings' {msSmoothOutputSettings} -> msSmoothOutputSettings) (\s@OutputSettings' {} a -> s {msSmoothOutputSettings = a} :: OutputSettings)

-- | Undocumented member.
outputSettings_multiplexOutputSettings :: Lens.Lens' OutputSettings (Prelude.Maybe MultiplexOutputSettings)
outputSettings_multiplexOutputSettings = Lens.lens (\OutputSettings' {multiplexOutputSettings} -> multiplexOutputSettings) (\s@OutputSettings' {} a -> s {multiplexOutputSettings = a} :: OutputSettings)

-- | Undocumented member.
outputSettings_rtmpOutputSettings :: Lens.Lens' OutputSettings (Prelude.Maybe RtmpOutputSettings)
outputSettings_rtmpOutputSettings = Lens.lens (\OutputSettings' {rtmpOutputSettings} -> rtmpOutputSettings) (\s@OutputSettings' {} a -> s {rtmpOutputSettings = a} :: OutputSettings)

-- | Undocumented member.
outputSettings_udpOutputSettings :: Lens.Lens' OutputSettings (Prelude.Maybe UdpOutputSettings)
outputSettings_udpOutputSettings = Lens.lens (\OutputSettings' {udpOutputSettings} -> udpOutputSettings) (\s@OutputSettings' {} a -> s {udpOutputSettings = a} :: OutputSettings)

instance Data.FromJSON OutputSettings where
  parseJSON =
    Data.withObject
      "OutputSettings"
      ( \x ->
          OutputSettings'
            Prelude.<$> (x Data..:? "archiveOutputSettings")
            Prelude.<*> (x Data..:? "frameCaptureOutputSettings")
            Prelude.<*> (x Data..:? "hlsOutputSettings")
            Prelude.<*> (x Data..:? "mediaPackageOutputSettings")
            Prelude.<*> (x Data..:? "msSmoothOutputSettings")
            Prelude.<*> (x Data..:? "multiplexOutputSettings")
            Prelude.<*> (x Data..:? "rtmpOutputSettings")
            Prelude.<*> (x Data..:? "udpOutputSettings")
      )

instance Prelude.Hashable OutputSettings where
  hashWithSalt _salt OutputSettings' {..} =
    _salt
      `Prelude.hashWithSalt` archiveOutputSettings
      `Prelude.hashWithSalt` frameCaptureOutputSettings
      `Prelude.hashWithSalt` hlsOutputSettings
      `Prelude.hashWithSalt` mediaPackageOutputSettings
      `Prelude.hashWithSalt` msSmoothOutputSettings
      `Prelude.hashWithSalt` multiplexOutputSettings
      `Prelude.hashWithSalt` rtmpOutputSettings
      `Prelude.hashWithSalt` udpOutputSettings

instance Prelude.NFData OutputSettings where
  rnf OutputSettings' {..} =
    Prelude.rnf archiveOutputSettings
      `Prelude.seq` Prelude.rnf frameCaptureOutputSettings
      `Prelude.seq` Prelude.rnf hlsOutputSettings
      `Prelude.seq` Prelude.rnf mediaPackageOutputSettings
      `Prelude.seq` Prelude.rnf msSmoothOutputSettings
      `Prelude.seq` Prelude.rnf multiplexOutputSettings
      `Prelude.seq` Prelude.rnf rtmpOutputSettings
      `Prelude.seq` Prelude.rnf udpOutputSettings

instance Data.ToJSON OutputSettings where
  toJSON OutputSettings' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("archiveOutputSettings" Data..=)
              Prelude.<$> archiveOutputSettings,
            ("frameCaptureOutputSettings" Data..=)
              Prelude.<$> frameCaptureOutputSettings,
            ("hlsOutputSettings" Data..=)
              Prelude.<$> hlsOutputSettings,
            ("mediaPackageOutputSettings" Data..=)
              Prelude.<$> mediaPackageOutputSettings,
            ("msSmoothOutputSettings" Data..=)
              Prelude.<$> msSmoothOutputSettings,
            ("multiplexOutputSettings" Data..=)
              Prelude.<$> multiplexOutputSettings,
            ("rtmpOutputSettings" Data..=)
              Prelude.<$> rtmpOutputSettings,
            ("udpOutputSettings" Data..=)
              Prelude.<$> udpOutputSettings
          ]
      )