amazonka-medialive-2.0: gen/Amazonka/MediaLive/Types/OutputDestination.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.OutputDestination
-- 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.OutputDestination 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.MediaPackageOutputDestinationSettings
import Amazonka.MediaLive.Types.MultiplexProgramChannelDestinationSettings
import Amazonka.MediaLive.Types.OutputDestinationSettings
import qualified Amazonka.Prelude as Prelude
-- | Placeholder documentation for OutputDestination
--
-- /See:/ 'newOutputDestination' smart constructor.
data OutputDestination = OutputDestination'
{ -- | User-specified id. This is used in an output group or an output.
id :: Prelude.Maybe Prelude.Text,
-- | Destination settings for a MediaPackage output; one destination for both
-- encoders.
mediaPackageSettings :: Prelude.Maybe [MediaPackageOutputDestinationSettings],
-- | Destination settings for a Multiplex output; one destination for both
-- encoders.
multiplexSettings :: Prelude.Maybe MultiplexProgramChannelDestinationSettings,
-- | Destination settings for a standard output; one destination for each
-- redundant encoder.
settings :: Prelude.Maybe [OutputDestinationSettings]
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'OutputDestination' 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:
--
-- 'id', 'outputDestination_id' - User-specified id. This is used in an output group or an output.
--
-- 'mediaPackageSettings', 'outputDestination_mediaPackageSettings' - Destination settings for a MediaPackage output; one destination for both
-- encoders.
--
-- 'multiplexSettings', 'outputDestination_multiplexSettings' - Destination settings for a Multiplex output; one destination for both
-- encoders.
--
-- 'settings', 'outputDestination_settings' - Destination settings for a standard output; one destination for each
-- redundant encoder.
newOutputDestination ::
OutputDestination
newOutputDestination =
OutputDestination'
{ id = Prelude.Nothing,
mediaPackageSettings = Prelude.Nothing,
multiplexSettings = Prelude.Nothing,
settings = Prelude.Nothing
}
-- | User-specified id. This is used in an output group or an output.
outputDestination_id :: Lens.Lens' OutputDestination (Prelude.Maybe Prelude.Text)
outputDestination_id = Lens.lens (\OutputDestination' {id} -> id) (\s@OutputDestination' {} a -> s {id = a} :: OutputDestination)
-- | Destination settings for a MediaPackage output; one destination for both
-- encoders.
outputDestination_mediaPackageSettings :: Lens.Lens' OutputDestination (Prelude.Maybe [MediaPackageOutputDestinationSettings])
outputDestination_mediaPackageSettings = Lens.lens (\OutputDestination' {mediaPackageSettings} -> mediaPackageSettings) (\s@OutputDestination' {} a -> s {mediaPackageSettings = a} :: OutputDestination) Prelude.. Lens.mapping Lens.coerced
-- | Destination settings for a Multiplex output; one destination for both
-- encoders.
outputDestination_multiplexSettings :: Lens.Lens' OutputDestination (Prelude.Maybe MultiplexProgramChannelDestinationSettings)
outputDestination_multiplexSettings = Lens.lens (\OutputDestination' {multiplexSettings} -> multiplexSettings) (\s@OutputDestination' {} a -> s {multiplexSettings = a} :: OutputDestination)
-- | Destination settings for a standard output; one destination for each
-- redundant encoder.
outputDestination_settings :: Lens.Lens' OutputDestination (Prelude.Maybe [OutputDestinationSettings])
outputDestination_settings = Lens.lens (\OutputDestination' {settings} -> settings) (\s@OutputDestination' {} a -> s {settings = a} :: OutputDestination) Prelude.. Lens.mapping Lens.coerced
instance Data.FromJSON OutputDestination where
parseJSON =
Data.withObject
"OutputDestination"
( \x ->
OutputDestination'
Prelude.<$> (x Data..:? "id")
Prelude.<*> ( x
Data..:? "mediaPackageSettings"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "multiplexSettings")
Prelude.<*> (x Data..:? "settings" Data..!= Prelude.mempty)
)
instance Prelude.Hashable OutputDestination where
hashWithSalt _salt OutputDestination' {..} =
_salt
`Prelude.hashWithSalt` id
`Prelude.hashWithSalt` mediaPackageSettings
`Prelude.hashWithSalt` multiplexSettings
`Prelude.hashWithSalt` settings
instance Prelude.NFData OutputDestination where
rnf OutputDestination' {..} =
Prelude.rnf id
`Prelude.seq` Prelude.rnf mediaPackageSettings
`Prelude.seq` Prelude.rnf multiplexSettings
`Prelude.seq` Prelude.rnf settings
instance Data.ToJSON OutputDestination where
toJSON OutputDestination' {..} =
Data.object
( Prelude.catMaybes
[ ("id" Data..=) Prelude.<$> id,
("mediaPackageSettings" Data..=)
Prelude.<$> mediaPackageSettings,
("multiplexSettings" Data..=)
Prelude.<$> multiplexSettings,
("settings" Data..=) Prelude.<$> settings
]
)