{-# 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.OutputGroupSettings
-- 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.OutputGroupSettings 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.ArchiveGroupSettings
import Amazonka.MediaLive.Types.FrameCaptureGroupSettings
import Amazonka.MediaLive.Types.HlsGroupSettings
import Amazonka.MediaLive.Types.MediaPackageGroupSettings
import Amazonka.MediaLive.Types.MsSmoothGroupSettings
import Amazonka.MediaLive.Types.MultiplexGroupSettings
import Amazonka.MediaLive.Types.RtmpGroupSettings
import Amazonka.MediaLive.Types.UdpGroupSettings
import qualified Amazonka.Prelude as Prelude

-- | Output Group Settings
--
-- /See:/ 'newOutputGroupSettings' smart constructor.
data OutputGroupSettings = OutputGroupSettings'
  { OutputGroupSettings -> Maybe ArchiveGroupSettings
archiveGroupSettings :: Prelude.Maybe ArchiveGroupSettings,
    OutputGroupSettings -> Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings :: Prelude.Maybe FrameCaptureGroupSettings,
    OutputGroupSettings -> Maybe HlsGroupSettings
hlsGroupSettings :: Prelude.Maybe HlsGroupSettings,
    OutputGroupSettings -> Maybe MediaPackageGroupSettings
mediaPackageGroupSettings :: Prelude.Maybe MediaPackageGroupSettings,
    OutputGroupSettings -> Maybe MsSmoothGroupSettings
msSmoothGroupSettings :: Prelude.Maybe MsSmoothGroupSettings,
    OutputGroupSettings -> Maybe MultiplexGroupSettings
multiplexGroupSettings :: Prelude.Maybe MultiplexGroupSettings,
    OutputGroupSettings -> Maybe RtmpGroupSettings
rtmpGroupSettings :: Prelude.Maybe RtmpGroupSettings,
    OutputGroupSettings -> Maybe UdpGroupSettings
udpGroupSettings :: Prelude.Maybe UdpGroupSettings
  }
  deriving (OutputGroupSettings -> OutputGroupSettings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OutputGroupSettings -> OutputGroupSettings -> Bool
$c/= :: OutputGroupSettings -> OutputGroupSettings -> Bool
== :: OutputGroupSettings -> OutputGroupSettings -> Bool
$c== :: OutputGroupSettings -> OutputGroupSettings -> Bool
Prelude.Eq, ReadPrec [OutputGroupSettings]
ReadPrec OutputGroupSettings
Int -> ReadS OutputGroupSettings
ReadS [OutputGroupSettings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [OutputGroupSettings]
$creadListPrec :: ReadPrec [OutputGroupSettings]
readPrec :: ReadPrec OutputGroupSettings
$creadPrec :: ReadPrec OutputGroupSettings
readList :: ReadS [OutputGroupSettings]
$creadList :: ReadS [OutputGroupSettings]
readsPrec :: Int -> ReadS OutputGroupSettings
$creadsPrec :: Int -> ReadS OutputGroupSettings
Prelude.Read, Int -> OutputGroupSettings -> ShowS
[OutputGroupSettings] -> ShowS
OutputGroupSettings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OutputGroupSettings] -> ShowS
$cshowList :: [OutputGroupSettings] -> ShowS
show :: OutputGroupSettings -> String
$cshow :: OutputGroupSettings -> String
showsPrec :: Int -> OutputGroupSettings -> ShowS
$cshowsPrec :: Int -> OutputGroupSettings -> ShowS
Prelude.Show, forall x. Rep OutputGroupSettings x -> OutputGroupSettings
forall x. OutputGroupSettings -> Rep OutputGroupSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep OutputGroupSettings x -> OutputGroupSettings
$cfrom :: forall x. OutputGroupSettings -> Rep OutputGroupSettings x
Prelude.Generic)

-- |
-- Create a value of 'OutputGroupSettings' 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:
--
-- 'archiveGroupSettings', 'outputGroupSettings_archiveGroupSettings' - Undocumented member.
--
-- 'frameCaptureGroupSettings', 'outputGroupSettings_frameCaptureGroupSettings' - Undocumented member.
--
-- 'hlsGroupSettings', 'outputGroupSettings_hlsGroupSettings' - Undocumented member.
--
-- 'mediaPackageGroupSettings', 'outputGroupSettings_mediaPackageGroupSettings' - Undocumented member.
--
-- 'msSmoothGroupSettings', 'outputGroupSettings_msSmoothGroupSettings' - Undocumented member.
--
-- 'multiplexGroupSettings', 'outputGroupSettings_multiplexGroupSettings' - Undocumented member.
--
-- 'rtmpGroupSettings', 'outputGroupSettings_rtmpGroupSettings' - Undocumented member.
--
-- 'udpGroupSettings', 'outputGroupSettings_udpGroupSettings' - Undocumented member.
newOutputGroupSettings ::
  OutputGroupSettings
newOutputGroupSettings :: OutputGroupSettings
newOutputGroupSettings =
  OutputGroupSettings'
    { $sel:archiveGroupSettings:OutputGroupSettings' :: Maybe ArchiveGroupSettings
archiveGroupSettings =
        forall a. Maybe a
Prelude.Nothing,
      $sel:frameCaptureGroupSettings:OutputGroupSettings' :: Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:hlsGroupSettings:OutputGroupSettings' :: Maybe HlsGroupSettings
hlsGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:mediaPackageGroupSettings:OutputGroupSettings' :: Maybe MediaPackageGroupSettings
mediaPackageGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:msSmoothGroupSettings:OutputGroupSettings' :: Maybe MsSmoothGroupSettings
msSmoothGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:multiplexGroupSettings:OutputGroupSettings' :: Maybe MultiplexGroupSettings
multiplexGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:rtmpGroupSettings:OutputGroupSettings' :: Maybe RtmpGroupSettings
rtmpGroupSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:udpGroupSettings:OutputGroupSettings' :: Maybe UdpGroupSettings
udpGroupSettings = forall a. Maybe a
Prelude.Nothing
    }

-- | Undocumented member.
outputGroupSettings_archiveGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe ArchiveGroupSettings)
outputGroupSettings_archiveGroupSettings :: Lens' OutputGroupSettings (Maybe ArchiveGroupSettings)
outputGroupSettings_archiveGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe ArchiveGroupSettings
archiveGroupSettings :: Maybe ArchiveGroupSettings
$sel:archiveGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe ArchiveGroupSettings
archiveGroupSettings} -> Maybe ArchiveGroupSettings
archiveGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe ArchiveGroupSettings
a -> OutputGroupSettings
s {$sel:archiveGroupSettings:OutputGroupSettings' :: Maybe ArchiveGroupSettings
archiveGroupSettings = Maybe ArchiveGroupSettings
a} :: OutputGroupSettings)

-- | Undocumented member.
outputGroupSettings_frameCaptureGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe FrameCaptureGroupSettings)
outputGroupSettings_frameCaptureGroupSettings :: Lens' OutputGroupSettings (Maybe FrameCaptureGroupSettings)
outputGroupSettings_frameCaptureGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings :: Maybe FrameCaptureGroupSettings
$sel:frameCaptureGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings} -> Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe FrameCaptureGroupSettings
a -> OutputGroupSettings
s {$sel:frameCaptureGroupSettings:OutputGroupSettings' :: Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings = Maybe FrameCaptureGroupSettings
a} :: OutputGroupSettings)

-- | Undocumented member.
outputGroupSettings_hlsGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe HlsGroupSettings)
outputGroupSettings_hlsGroupSettings :: Lens' OutputGroupSettings (Maybe HlsGroupSettings)
outputGroupSettings_hlsGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe HlsGroupSettings
hlsGroupSettings :: Maybe HlsGroupSettings
$sel:hlsGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe HlsGroupSettings
hlsGroupSettings} -> Maybe HlsGroupSettings
hlsGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe HlsGroupSettings
a -> OutputGroupSettings
s {$sel:hlsGroupSettings:OutputGroupSettings' :: Maybe HlsGroupSettings
hlsGroupSettings = Maybe HlsGroupSettings
a} :: OutputGroupSettings)

-- | Undocumented member.
outputGroupSettings_mediaPackageGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe MediaPackageGroupSettings)
outputGroupSettings_mediaPackageGroupSettings :: Lens' OutputGroupSettings (Maybe MediaPackageGroupSettings)
outputGroupSettings_mediaPackageGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe MediaPackageGroupSettings
mediaPackageGroupSettings :: Maybe MediaPackageGroupSettings
$sel:mediaPackageGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MediaPackageGroupSettings
mediaPackageGroupSettings} -> Maybe MediaPackageGroupSettings
mediaPackageGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe MediaPackageGroupSettings
a -> OutputGroupSettings
s {$sel:mediaPackageGroupSettings:OutputGroupSettings' :: Maybe MediaPackageGroupSettings
mediaPackageGroupSettings = Maybe MediaPackageGroupSettings
a} :: OutputGroupSettings)

-- | Undocumented member.
outputGroupSettings_msSmoothGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe MsSmoothGroupSettings)
outputGroupSettings_msSmoothGroupSettings :: Lens' OutputGroupSettings (Maybe MsSmoothGroupSettings)
outputGroupSettings_msSmoothGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe MsSmoothGroupSettings
msSmoothGroupSettings :: Maybe MsSmoothGroupSettings
$sel:msSmoothGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MsSmoothGroupSettings
msSmoothGroupSettings} -> Maybe MsSmoothGroupSettings
msSmoothGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe MsSmoothGroupSettings
a -> OutputGroupSettings
s {$sel:msSmoothGroupSettings:OutputGroupSettings' :: Maybe MsSmoothGroupSettings
msSmoothGroupSettings = Maybe MsSmoothGroupSettings
a} :: OutputGroupSettings)

-- | Undocumented member.
outputGroupSettings_multiplexGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe MultiplexGroupSettings)
outputGroupSettings_multiplexGroupSettings :: Lens' OutputGroupSettings (Maybe MultiplexGroupSettings)
outputGroupSettings_multiplexGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe MultiplexGroupSettings
multiplexGroupSettings :: Maybe MultiplexGroupSettings
$sel:multiplexGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MultiplexGroupSettings
multiplexGroupSettings} -> Maybe MultiplexGroupSettings
multiplexGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe MultiplexGroupSettings
a -> OutputGroupSettings
s {$sel:multiplexGroupSettings:OutputGroupSettings' :: Maybe MultiplexGroupSettings
multiplexGroupSettings = Maybe MultiplexGroupSettings
a} :: OutputGroupSettings)

-- | Undocumented member.
outputGroupSettings_rtmpGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe RtmpGroupSettings)
outputGroupSettings_rtmpGroupSettings :: Lens' OutputGroupSettings (Maybe RtmpGroupSettings)
outputGroupSettings_rtmpGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe RtmpGroupSettings
rtmpGroupSettings :: Maybe RtmpGroupSettings
$sel:rtmpGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe RtmpGroupSettings
rtmpGroupSettings} -> Maybe RtmpGroupSettings
rtmpGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe RtmpGroupSettings
a -> OutputGroupSettings
s {$sel:rtmpGroupSettings:OutputGroupSettings' :: Maybe RtmpGroupSettings
rtmpGroupSettings = Maybe RtmpGroupSettings
a} :: OutputGroupSettings)

-- | Undocumented member.
outputGroupSettings_udpGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe UdpGroupSettings)
outputGroupSettings_udpGroupSettings :: Lens' OutputGroupSettings (Maybe UdpGroupSettings)
outputGroupSettings_udpGroupSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OutputGroupSettings' {Maybe UdpGroupSettings
udpGroupSettings :: Maybe UdpGroupSettings
$sel:udpGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe UdpGroupSettings
udpGroupSettings} -> Maybe UdpGroupSettings
udpGroupSettings) (\s :: OutputGroupSettings
s@OutputGroupSettings' {} Maybe UdpGroupSettings
a -> OutputGroupSettings
s {$sel:udpGroupSettings:OutputGroupSettings' :: Maybe UdpGroupSettings
udpGroupSettings = Maybe UdpGroupSettings
a} :: OutputGroupSettings)

instance Data.FromJSON OutputGroupSettings where
  parseJSON :: Value -> Parser OutputGroupSettings
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"OutputGroupSettings"
      ( \Object
x ->
          Maybe ArchiveGroupSettings
-> Maybe FrameCaptureGroupSettings
-> Maybe HlsGroupSettings
-> Maybe MediaPackageGroupSettings
-> Maybe MsSmoothGroupSettings
-> Maybe MultiplexGroupSettings
-> Maybe RtmpGroupSettings
-> Maybe UdpGroupSettings
-> OutputGroupSettings
OutputGroupSettings'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"archiveGroupSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"frameCaptureGroupSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"hlsGroupSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"mediaPackageGroupSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"msSmoothGroupSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"multiplexGroupSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"rtmpGroupSettings")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"udpGroupSettings")
      )

instance Prelude.Hashable OutputGroupSettings where
  hashWithSalt :: Int -> OutputGroupSettings -> Int
hashWithSalt Int
_salt OutputGroupSettings' {Maybe MultiplexGroupSettings
Maybe MediaPackageGroupSettings
Maybe RtmpGroupSettings
Maybe FrameCaptureGroupSettings
Maybe ArchiveGroupSettings
Maybe MsSmoothGroupSettings
Maybe HlsGroupSettings
Maybe UdpGroupSettings
udpGroupSettings :: Maybe UdpGroupSettings
rtmpGroupSettings :: Maybe RtmpGroupSettings
multiplexGroupSettings :: Maybe MultiplexGroupSettings
msSmoothGroupSettings :: Maybe MsSmoothGroupSettings
mediaPackageGroupSettings :: Maybe MediaPackageGroupSettings
hlsGroupSettings :: Maybe HlsGroupSettings
frameCaptureGroupSettings :: Maybe FrameCaptureGroupSettings
archiveGroupSettings :: Maybe ArchiveGroupSettings
$sel:udpGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe UdpGroupSettings
$sel:rtmpGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe RtmpGroupSettings
$sel:multiplexGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MultiplexGroupSettings
$sel:msSmoothGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MsSmoothGroupSettings
$sel:mediaPackageGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MediaPackageGroupSettings
$sel:hlsGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe HlsGroupSettings
$sel:frameCaptureGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe FrameCaptureGroupSettings
$sel:archiveGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe ArchiveGroupSettings
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ArchiveGroupSettings
archiveGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsGroupSettings
hlsGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MediaPackageGroupSettings
mediaPackageGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MsSmoothGroupSettings
msSmoothGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MultiplexGroupSettings
multiplexGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RtmpGroupSettings
rtmpGroupSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UdpGroupSettings
udpGroupSettings

instance Prelude.NFData OutputGroupSettings where
  rnf :: OutputGroupSettings -> ()
rnf OutputGroupSettings' {Maybe MultiplexGroupSettings
Maybe MediaPackageGroupSettings
Maybe RtmpGroupSettings
Maybe FrameCaptureGroupSettings
Maybe ArchiveGroupSettings
Maybe MsSmoothGroupSettings
Maybe HlsGroupSettings
Maybe UdpGroupSettings
udpGroupSettings :: Maybe UdpGroupSettings
rtmpGroupSettings :: Maybe RtmpGroupSettings
multiplexGroupSettings :: Maybe MultiplexGroupSettings
msSmoothGroupSettings :: Maybe MsSmoothGroupSettings
mediaPackageGroupSettings :: Maybe MediaPackageGroupSettings
hlsGroupSettings :: Maybe HlsGroupSettings
frameCaptureGroupSettings :: Maybe FrameCaptureGroupSettings
archiveGroupSettings :: Maybe ArchiveGroupSettings
$sel:udpGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe UdpGroupSettings
$sel:rtmpGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe RtmpGroupSettings
$sel:multiplexGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MultiplexGroupSettings
$sel:msSmoothGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MsSmoothGroupSettings
$sel:mediaPackageGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MediaPackageGroupSettings
$sel:hlsGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe HlsGroupSettings
$sel:frameCaptureGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe FrameCaptureGroupSettings
$sel:archiveGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe ArchiveGroupSettings
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ArchiveGroupSettings
archiveGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsGroupSettings
hlsGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MediaPackageGroupSettings
mediaPackageGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MsSmoothGroupSettings
msSmoothGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MultiplexGroupSettings
multiplexGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RtmpGroupSettings
rtmpGroupSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UdpGroupSettings
udpGroupSettings

instance Data.ToJSON OutputGroupSettings where
  toJSON :: OutputGroupSettings -> Value
toJSON OutputGroupSettings' {Maybe MultiplexGroupSettings
Maybe MediaPackageGroupSettings
Maybe RtmpGroupSettings
Maybe FrameCaptureGroupSettings
Maybe ArchiveGroupSettings
Maybe MsSmoothGroupSettings
Maybe HlsGroupSettings
Maybe UdpGroupSettings
udpGroupSettings :: Maybe UdpGroupSettings
rtmpGroupSettings :: Maybe RtmpGroupSettings
multiplexGroupSettings :: Maybe MultiplexGroupSettings
msSmoothGroupSettings :: Maybe MsSmoothGroupSettings
mediaPackageGroupSettings :: Maybe MediaPackageGroupSettings
hlsGroupSettings :: Maybe HlsGroupSettings
frameCaptureGroupSettings :: Maybe FrameCaptureGroupSettings
archiveGroupSettings :: Maybe ArchiveGroupSettings
$sel:udpGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe UdpGroupSettings
$sel:rtmpGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe RtmpGroupSettings
$sel:multiplexGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MultiplexGroupSettings
$sel:msSmoothGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MsSmoothGroupSettings
$sel:mediaPackageGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe MediaPackageGroupSettings
$sel:hlsGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe HlsGroupSettings
$sel:frameCaptureGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe FrameCaptureGroupSettings
$sel:archiveGroupSettings:OutputGroupSettings' :: OutputGroupSettings -> Maybe ArchiveGroupSettings
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"archiveGroupSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ArchiveGroupSettings
archiveGroupSettings,
            (Key
"frameCaptureGroupSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings,
            (Key
"hlsGroupSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HlsGroupSettings
hlsGroupSettings,
            (Key
"mediaPackageGroupSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MediaPackageGroupSettings
mediaPackageGroupSettings,
            (Key
"msSmoothGroupSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MsSmoothGroupSettings
msSmoothGroupSettings,
            (Key
"multiplexGroupSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MultiplexGroupSettings
multiplexGroupSettings,
            (Key
"rtmpGroupSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RtmpGroupSettings
rtmpGroupSettings,
            (Key
"udpGroupSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe UdpGroupSettings
udpGroupSettings
          ]
      )