packages feed

amazonka-medialive-2.0: gen/Amazonka/MediaLive/Types/Scte35DeliveryRestrictions.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.Scte35DeliveryRestrictions
-- 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.Scte35DeliveryRestrictions 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.Scte35ArchiveAllowedFlag
import Amazonka.MediaLive.Types.Scte35DeviceRestrictions
import Amazonka.MediaLive.Types.Scte35NoRegionalBlackoutFlag
import Amazonka.MediaLive.Types.Scte35WebDeliveryAllowedFlag
import qualified Amazonka.Prelude as Prelude

-- | Corresponds to SCTE-35 delivery_not_restricted_flag parameter. To
-- declare delivery restrictions, include this element and its four
-- \"restriction\" flags. To declare that there are no restrictions, omit
-- this element.
--
-- /See:/ 'newScte35DeliveryRestrictions' smart constructor.
data Scte35DeliveryRestrictions = Scte35DeliveryRestrictions'
  { -- | Corresponds to SCTE-35 device_restrictions parameter.
    deviceRestrictions :: Scte35DeviceRestrictions,
    -- | Corresponds to SCTE-35 archive_allowed_flag.
    archiveAllowedFlag :: Scte35ArchiveAllowedFlag,
    -- | Corresponds to SCTE-35 web_delivery_allowed_flag parameter.
    webDeliveryAllowedFlag :: Scte35WebDeliveryAllowedFlag,
    -- | Corresponds to SCTE-35 no_regional_blackout_flag parameter.
    noRegionalBlackoutFlag :: Scte35NoRegionalBlackoutFlag
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'Scte35DeliveryRestrictions' 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:
--
-- 'deviceRestrictions', 'scte35DeliveryRestrictions_deviceRestrictions' - Corresponds to SCTE-35 device_restrictions parameter.
--
-- 'archiveAllowedFlag', 'scte35DeliveryRestrictions_archiveAllowedFlag' - Corresponds to SCTE-35 archive_allowed_flag.
--
-- 'webDeliveryAllowedFlag', 'scte35DeliveryRestrictions_webDeliveryAllowedFlag' - Corresponds to SCTE-35 web_delivery_allowed_flag parameter.
--
-- 'noRegionalBlackoutFlag', 'scte35DeliveryRestrictions_noRegionalBlackoutFlag' - Corresponds to SCTE-35 no_regional_blackout_flag parameter.
newScte35DeliveryRestrictions ::
  -- | 'deviceRestrictions'
  Scte35DeviceRestrictions ->
  -- | 'archiveAllowedFlag'
  Scte35ArchiveAllowedFlag ->
  -- | 'webDeliveryAllowedFlag'
  Scte35WebDeliveryAllowedFlag ->
  -- | 'noRegionalBlackoutFlag'
  Scte35NoRegionalBlackoutFlag ->
  Scte35DeliveryRestrictions
newScte35DeliveryRestrictions
  pDeviceRestrictions_
  pArchiveAllowedFlag_
  pWebDeliveryAllowedFlag_
  pNoRegionalBlackoutFlag_ =
    Scte35DeliveryRestrictions'
      { deviceRestrictions =
          pDeviceRestrictions_,
        archiveAllowedFlag = pArchiveAllowedFlag_,
        webDeliveryAllowedFlag =
          pWebDeliveryAllowedFlag_,
        noRegionalBlackoutFlag =
          pNoRegionalBlackoutFlag_
      }

-- | Corresponds to SCTE-35 device_restrictions parameter.
scte35DeliveryRestrictions_deviceRestrictions :: Lens.Lens' Scte35DeliveryRestrictions Scte35DeviceRestrictions
scte35DeliveryRestrictions_deviceRestrictions = Lens.lens (\Scte35DeliveryRestrictions' {deviceRestrictions} -> deviceRestrictions) (\s@Scte35DeliveryRestrictions' {} a -> s {deviceRestrictions = a} :: Scte35DeliveryRestrictions)

-- | Corresponds to SCTE-35 archive_allowed_flag.
scte35DeliveryRestrictions_archiveAllowedFlag :: Lens.Lens' Scte35DeliveryRestrictions Scte35ArchiveAllowedFlag
scte35DeliveryRestrictions_archiveAllowedFlag = Lens.lens (\Scte35DeliveryRestrictions' {archiveAllowedFlag} -> archiveAllowedFlag) (\s@Scte35DeliveryRestrictions' {} a -> s {archiveAllowedFlag = a} :: Scte35DeliveryRestrictions)

-- | Corresponds to SCTE-35 web_delivery_allowed_flag parameter.
scte35DeliveryRestrictions_webDeliveryAllowedFlag :: Lens.Lens' Scte35DeliveryRestrictions Scte35WebDeliveryAllowedFlag
scte35DeliveryRestrictions_webDeliveryAllowedFlag = Lens.lens (\Scte35DeliveryRestrictions' {webDeliveryAllowedFlag} -> webDeliveryAllowedFlag) (\s@Scte35DeliveryRestrictions' {} a -> s {webDeliveryAllowedFlag = a} :: Scte35DeliveryRestrictions)

-- | Corresponds to SCTE-35 no_regional_blackout_flag parameter.
scte35DeliveryRestrictions_noRegionalBlackoutFlag :: Lens.Lens' Scte35DeliveryRestrictions Scte35NoRegionalBlackoutFlag
scte35DeliveryRestrictions_noRegionalBlackoutFlag = Lens.lens (\Scte35DeliveryRestrictions' {noRegionalBlackoutFlag} -> noRegionalBlackoutFlag) (\s@Scte35DeliveryRestrictions' {} a -> s {noRegionalBlackoutFlag = a} :: Scte35DeliveryRestrictions)

instance Data.FromJSON Scte35DeliveryRestrictions where
  parseJSON =
    Data.withObject
      "Scte35DeliveryRestrictions"
      ( \x ->
          Scte35DeliveryRestrictions'
            Prelude.<$> (x Data..: "deviceRestrictions")
            Prelude.<*> (x Data..: "archiveAllowedFlag")
            Prelude.<*> (x Data..: "webDeliveryAllowedFlag")
            Prelude.<*> (x Data..: "noRegionalBlackoutFlag")
      )

instance Prelude.Hashable Scte35DeliveryRestrictions where
  hashWithSalt _salt Scte35DeliveryRestrictions' {..} =
    _salt
      `Prelude.hashWithSalt` deviceRestrictions
      `Prelude.hashWithSalt` archiveAllowedFlag
      `Prelude.hashWithSalt` webDeliveryAllowedFlag
      `Prelude.hashWithSalt` noRegionalBlackoutFlag

instance Prelude.NFData Scte35DeliveryRestrictions where
  rnf Scte35DeliveryRestrictions' {..} =
    Prelude.rnf deviceRestrictions
      `Prelude.seq` Prelude.rnf archiveAllowedFlag
      `Prelude.seq` Prelude.rnf webDeliveryAllowedFlag
      `Prelude.seq` Prelude.rnf noRegionalBlackoutFlag

instance Data.ToJSON Scte35DeliveryRestrictions where
  toJSON Scte35DeliveryRestrictions' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just
              ("deviceRestrictions" Data..= deviceRestrictions),
            Prelude.Just
              ("archiveAllowedFlag" Data..= archiveAllowedFlag),
            Prelude.Just
              ( "webDeliveryAllowedFlag"
                  Data..= webDeliveryAllowedFlag
              ),
            Prelude.Just
              ( "noRegionalBlackoutFlag"
                  Data..= noRegionalBlackoutFlag
              )
          ]
      )