packages feed

amazonka-medialive-2.0: gen/Amazonka/MediaLive/Types/FailoverConditionSettings.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.FailoverConditionSettings
-- 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.FailoverConditionSettings 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.AudioSilenceFailoverSettings
import Amazonka.MediaLive.Types.InputLossFailoverSettings
import Amazonka.MediaLive.Types.VideoBlackFailoverSettings
import qualified Amazonka.Prelude as Prelude

-- | Settings for one failover condition.
--
-- /See:/ 'newFailoverConditionSettings' smart constructor.
data FailoverConditionSettings = FailoverConditionSettings'
  { -- | MediaLive will perform a failover if the specified audio selector is
    -- silent for the specified period.
    audioSilenceSettings :: Prelude.Maybe AudioSilenceFailoverSettings,
    -- | MediaLive will perform a failover if content is not detected in this
    -- input for the specified period.
    inputLossSettings :: Prelude.Maybe InputLossFailoverSettings,
    -- | MediaLive will perform a failover if content is considered black for the
    -- specified period.
    videoBlackSettings :: Prelude.Maybe VideoBlackFailoverSettings
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'FailoverConditionSettings' 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:
--
-- 'audioSilenceSettings', 'failoverConditionSettings_audioSilenceSettings' - MediaLive will perform a failover if the specified audio selector is
-- silent for the specified period.
--
-- 'inputLossSettings', 'failoverConditionSettings_inputLossSettings' - MediaLive will perform a failover if content is not detected in this
-- input for the specified period.
--
-- 'videoBlackSettings', 'failoverConditionSettings_videoBlackSettings' - MediaLive will perform a failover if content is considered black for the
-- specified period.
newFailoverConditionSettings ::
  FailoverConditionSettings
newFailoverConditionSettings =
  FailoverConditionSettings'
    { audioSilenceSettings =
        Prelude.Nothing,
      inputLossSettings = Prelude.Nothing,
      videoBlackSettings = Prelude.Nothing
    }

-- | MediaLive will perform a failover if the specified audio selector is
-- silent for the specified period.
failoverConditionSettings_audioSilenceSettings :: Lens.Lens' FailoverConditionSettings (Prelude.Maybe AudioSilenceFailoverSettings)
failoverConditionSettings_audioSilenceSettings = Lens.lens (\FailoverConditionSettings' {audioSilenceSettings} -> audioSilenceSettings) (\s@FailoverConditionSettings' {} a -> s {audioSilenceSettings = a} :: FailoverConditionSettings)

-- | MediaLive will perform a failover if content is not detected in this
-- input for the specified period.
failoverConditionSettings_inputLossSettings :: Lens.Lens' FailoverConditionSettings (Prelude.Maybe InputLossFailoverSettings)
failoverConditionSettings_inputLossSettings = Lens.lens (\FailoverConditionSettings' {inputLossSettings} -> inputLossSettings) (\s@FailoverConditionSettings' {} a -> s {inputLossSettings = a} :: FailoverConditionSettings)

-- | MediaLive will perform a failover if content is considered black for the
-- specified period.
failoverConditionSettings_videoBlackSettings :: Lens.Lens' FailoverConditionSettings (Prelude.Maybe VideoBlackFailoverSettings)
failoverConditionSettings_videoBlackSettings = Lens.lens (\FailoverConditionSettings' {videoBlackSettings} -> videoBlackSettings) (\s@FailoverConditionSettings' {} a -> s {videoBlackSettings = a} :: FailoverConditionSettings)

instance Data.FromJSON FailoverConditionSettings where
  parseJSON =
    Data.withObject
      "FailoverConditionSettings"
      ( \x ->
          FailoverConditionSettings'
            Prelude.<$> (x Data..:? "audioSilenceSettings")
            Prelude.<*> (x Data..:? "inputLossSettings")
            Prelude.<*> (x Data..:? "videoBlackSettings")
      )

instance Prelude.Hashable FailoverConditionSettings where
  hashWithSalt _salt FailoverConditionSettings' {..} =
    _salt
      `Prelude.hashWithSalt` audioSilenceSettings
      `Prelude.hashWithSalt` inputLossSettings
      `Prelude.hashWithSalt` videoBlackSettings

instance Prelude.NFData FailoverConditionSettings where
  rnf FailoverConditionSettings' {..} =
    Prelude.rnf audioSilenceSettings
      `Prelude.seq` Prelude.rnf inputLossSettings
      `Prelude.seq` Prelude.rnf videoBlackSettings

instance Data.ToJSON FailoverConditionSettings where
  toJSON FailoverConditionSettings' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("audioSilenceSettings" Data..=)
              Prelude.<$> audioSilenceSettings,
            ("inputLossSettings" Data..=)
              Prelude.<$> inputLossSettings,
            ("videoBlackSettings" Data..=)
              Prelude.<$> videoBlackSettings
          ]
      )