{-# 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-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MediaLive.Types.OutputGroupSettings where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
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 MediaPackageGroupSettings
mediaPackageGroupSettings :: Prelude.Maybe MediaPackageGroupSettings,
    OutputGroupSettings -> Maybe MsSmoothGroupSettings
msSmoothGroupSettings :: Prelude.Maybe MsSmoothGroupSettings,
    OutputGroupSettings -> Maybe RtmpGroupSettings
rtmpGroupSettings :: Prelude.Maybe RtmpGroupSettings,
    OutputGroupSettings -> Maybe MultiplexGroupSettings
multiplexGroupSettings :: Prelude.Maybe MultiplexGroupSettings,
    OutputGroupSettings -> Maybe HlsGroupSettings
hlsGroupSettings :: Prelude.Maybe HlsGroupSettings,
    OutputGroupSettings -> Maybe ArchiveGroupSettings
archiveGroupSettings :: Prelude.Maybe ArchiveGroupSettings,
    OutputGroupSettings -> Maybe UdpGroupSettings
udpGroupSettings :: Prelude.Maybe UdpGroupSettings,
    OutputGroupSettings -> Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings :: Prelude.Maybe FrameCaptureGroupSettings
  }
  deriving (OutputGroupSettings -> OutputGroupSettings -> Bool
(OutputGroupSettings -> OutputGroupSettings -> Bool)
-> (OutputGroupSettings -> OutputGroupSettings -> Bool)
-> Eq OutputGroupSettings
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]
(Int -> ReadS OutputGroupSettings)
-> ReadS [OutputGroupSettings]
-> ReadPrec OutputGroupSettings
-> ReadPrec [OutputGroupSettings]
-> Read 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
(Int -> OutputGroupSettings -> ShowS)
-> (OutputGroupSettings -> String)
-> ([OutputGroupSettings] -> ShowS)
-> Show OutputGroupSettings
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. OutputGroupSettings -> Rep OutputGroupSettings x)
-> (forall x. Rep OutputGroupSettings x -> OutputGroupSettings)
-> Generic OutputGroupSettings
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:
--
-- 'mediaPackageGroupSettings', 'outputGroupSettings_mediaPackageGroupSettings' - Undocumented member.
--
-- 'msSmoothGroupSettings', 'outputGroupSettings_msSmoothGroupSettings' - Undocumented member.
--
-- 'rtmpGroupSettings', 'outputGroupSettings_rtmpGroupSettings' - Undocumented member.
--
-- 'multiplexGroupSettings', 'outputGroupSettings_multiplexGroupSettings' - Undocumented member.
--
-- 'hlsGroupSettings', 'outputGroupSettings_hlsGroupSettings' - Undocumented member.
--
-- 'archiveGroupSettings', 'outputGroupSettings_archiveGroupSettings' - Undocumented member.
--
-- 'udpGroupSettings', 'outputGroupSettings_udpGroupSettings' - Undocumented member.
--
-- 'frameCaptureGroupSettings', 'outputGroupSettings_frameCaptureGroupSettings' - Undocumented member.
newOutputGroupSettings ::
  OutputGroupSettings
newOutputGroupSettings :: OutputGroupSettings
newOutputGroupSettings =
  OutputGroupSettings' :: Maybe MediaPackageGroupSettings
-> Maybe MsSmoothGroupSettings
-> Maybe RtmpGroupSettings
-> Maybe MultiplexGroupSettings
-> Maybe HlsGroupSettings
-> Maybe ArchiveGroupSettings
-> Maybe UdpGroupSettings
-> Maybe FrameCaptureGroupSettings
-> OutputGroupSettings
OutputGroupSettings'
    { $sel:mediaPackageGroupSettings:OutputGroupSettings' :: Maybe MediaPackageGroupSettings
mediaPackageGroupSettings =
        Maybe MediaPackageGroupSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:msSmoothGroupSettings:OutputGroupSettings' :: Maybe MsSmoothGroupSettings
msSmoothGroupSettings = Maybe MsSmoothGroupSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:rtmpGroupSettings:OutputGroupSettings' :: Maybe RtmpGroupSettings
rtmpGroupSettings = Maybe RtmpGroupSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:multiplexGroupSettings:OutputGroupSettings' :: Maybe MultiplexGroupSettings
multiplexGroupSettings = Maybe MultiplexGroupSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:hlsGroupSettings:OutputGroupSettings' :: Maybe HlsGroupSettings
hlsGroupSettings = Maybe HlsGroupSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:archiveGroupSettings:OutputGroupSettings' :: Maybe ArchiveGroupSettings
archiveGroupSettings = Maybe ArchiveGroupSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:udpGroupSettings:OutputGroupSettings' :: Maybe UdpGroupSettings
udpGroupSettings = Maybe UdpGroupSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:frameCaptureGroupSettings:OutputGroupSettings' :: Maybe FrameCaptureGroupSettings
frameCaptureGroupSettings = Maybe FrameCaptureGroupSettings
forall a. Maybe a
Prelude.Nothing
    }

-- | Undocumented member.
outputGroupSettings_mediaPackageGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe MediaPackageGroupSettings)
outputGroupSettings_mediaPackageGroupSettings :: (Maybe MediaPackageGroupSettings
 -> f (Maybe MediaPackageGroupSettings))
-> OutputGroupSettings -> f OutputGroupSettings
outputGroupSettings_mediaPackageGroupSettings = (OutputGroupSettings -> Maybe MediaPackageGroupSettings)
-> (OutputGroupSettings
    -> Maybe MediaPackageGroupSettings -> OutputGroupSettings)
-> Lens
     OutputGroupSettings
     OutputGroupSettings
     (Maybe MediaPackageGroupSettings)
     (Maybe 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 :: (Maybe MsSmoothGroupSettings -> f (Maybe MsSmoothGroupSettings))
-> OutputGroupSettings -> f OutputGroupSettings
outputGroupSettings_msSmoothGroupSettings = (OutputGroupSettings -> Maybe MsSmoothGroupSettings)
-> (OutputGroupSettings
    -> Maybe MsSmoothGroupSettings -> OutputGroupSettings)
-> Lens
     OutputGroupSettings
     OutputGroupSettings
     (Maybe MsSmoothGroupSettings)
     (Maybe 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_rtmpGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe RtmpGroupSettings)
outputGroupSettings_rtmpGroupSettings :: (Maybe RtmpGroupSettings -> f (Maybe RtmpGroupSettings))
-> OutputGroupSettings -> f OutputGroupSettings
outputGroupSettings_rtmpGroupSettings = (OutputGroupSettings -> Maybe RtmpGroupSettings)
-> (OutputGroupSettings
    -> Maybe RtmpGroupSettings -> OutputGroupSettings)
-> Lens
     OutputGroupSettings
     OutputGroupSettings
     (Maybe RtmpGroupSettings)
     (Maybe 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_multiplexGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe MultiplexGroupSettings)
outputGroupSettings_multiplexGroupSettings :: (Maybe MultiplexGroupSettings -> f (Maybe MultiplexGroupSettings))
-> OutputGroupSettings -> f OutputGroupSettings
outputGroupSettings_multiplexGroupSettings = (OutputGroupSettings -> Maybe MultiplexGroupSettings)
-> (OutputGroupSettings
    -> Maybe MultiplexGroupSettings -> OutputGroupSettings)
-> Lens
     OutputGroupSettings
     OutputGroupSettings
     (Maybe MultiplexGroupSettings)
     (Maybe 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_hlsGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe HlsGroupSettings)
outputGroupSettings_hlsGroupSettings :: (Maybe HlsGroupSettings -> f (Maybe HlsGroupSettings))
-> OutputGroupSettings -> f OutputGroupSettings
outputGroupSettings_hlsGroupSettings = (OutputGroupSettings -> Maybe HlsGroupSettings)
-> (OutputGroupSettings
    -> Maybe HlsGroupSettings -> OutputGroupSettings)
-> Lens
     OutputGroupSettings
     OutputGroupSettings
     (Maybe HlsGroupSettings)
     (Maybe 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_archiveGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe ArchiveGroupSettings)
outputGroupSettings_archiveGroupSettings :: (Maybe ArchiveGroupSettings -> f (Maybe ArchiveGroupSettings))
-> OutputGroupSettings -> f OutputGroupSettings
outputGroupSettings_archiveGroupSettings = (OutputGroupSettings -> Maybe ArchiveGroupSettings)
-> (OutputGroupSettings
    -> Maybe ArchiveGroupSettings -> OutputGroupSettings)
-> Lens
     OutputGroupSettings
     OutputGroupSettings
     (Maybe ArchiveGroupSettings)
     (Maybe 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_udpGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe UdpGroupSettings)
outputGroupSettings_udpGroupSettings :: (Maybe UdpGroupSettings -> f (Maybe UdpGroupSettings))
-> OutputGroupSettings -> f OutputGroupSettings
outputGroupSettings_udpGroupSettings = (OutputGroupSettings -> Maybe UdpGroupSettings)
-> (OutputGroupSettings
    -> Maybe UdpGroupSettings -> OutputGroupSettings)
-> Lens
     OutputGroupSettings
     OutputGroupSettings
     (Maybe UdpGroupSettings)
     (Maybe 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)

-- | Undocumented member.
outputGroupSettings_frameCaptureGroupSettings :: Lens.Lens' OutputGroupSettings (Prelude.Maybe FrameCaptureGroupSettings)
outputGroupSettings_frameCaptureGroupSettings :: (Maybe FrameCaptureGroupSettings
 -> f (Maybe FrameCaptureGroupSettings))
-> OutputGroupSettings -> f OutputGroupSettings
outputGroupSettings_frameCaptureGroupSettings = (OutputGroupSettings -> Maybe FrameCaptureGroupSettings)
-> (OutputGroupSettings
    -> Maybe FrameCaptureGroupSettings -> OutputGroupSettings)
-> Lens
     OutputGroupSettings
     OutputGroupSettings
     (Maybe FrameCaptureGroupSettings)
     (Maybe 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)

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

instance Prelude.Hashable OutputGroupSettings

instance Prelude.NFData OutputGroupSettings

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