{-# 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.MediaPackageVOD.Types.PackagingConfiguration
-- 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.MediaPackageVOD.Types.PackagingConfiguration where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MediaPackageVOD.Types.CmafPackage
import Amazonka.MediaPackageVOD.Types.DashPackage
import Amazonka.MediaPackageVOD.Types.HlsPackage
import Amazonka.MediaPackageVOD.Types.MssPackage
import qualified Amazonka.Prelude as Prelude

-- | A MediaPackage VOD PackagingConfiguration resource.
--
-- /See:/ 'newPackagingConfiguration' smart constructor.
data PackagingConfiguration = PackagingConfiguration'
  { -- | The ARN of the PackagingConfiguration.
    PackagingConfiguration -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    PackagingConfiguration -> Maybe CmafPackage
cmafPackage :: Prelude.Maybe CmafPackage,
    PackagingConfiguration -> Maybe DashPackage
dashPackage :: Prelude.Maybe DashPackage,
    PackagingConfiguration -> Maybe HlsPackage
hlsPackage :: Prelude.Maybe HlsPackage,
    -- | The ID of the PackagingConfiguration.
    PackagingConfiguration -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    PackagingConfiguration -> Maybe MssPackage
mssPackage :: Prelude.Maybe MssPackage,
    -- | The ID of a PackagingGroup.
    PackagingConfiguration -> Maybe Text
packagingGroupId :: Prelude.Maybe Prelude.Text,
    PackagingConfiguration -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
  }
  deriving (PackagingConfiguration -> PackagingConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackagingConfiguration -> PackagingConfiguration -> Bool
$c/= :: PackagingConfiguration -> PackagingConfiguration -> Bool
== :: PackagingConfiguration -> PackagingConfiguration -> Bool
$c== :: PackagingConfiguration -> PackagingConfiguration -> Bool
Prelude.Eq, ReadPrec [PackagingConfiguration]
ReadPrec PackagingConfiguration
Int -> ReadS PackagingConfiguration
ReadS [PackagingConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PackagingConfiguration]
$creadListPrec :: ReadPrec [PackagingConfiguration]
readPrec :: ReadPrec PackagingConfiguration
$creadPrec :: ReadPrec PackagingConfiguration
readList :: ReadS [PackagingConfiguration]
$creadList :: ReadS [PackagingConfiguration]
readsPrec :: Int -> ReadS PackagingConfiguration
$creadsPrec :: Int -> ReadS PackagingConfiguration
Prelude.Read, Int -> PackagingConfiguration -> ShowS
[PackagingConfiguration] -> ShowS
PackagingConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackagingConfiguration] -> ShowS
$cshowList :: [PackagingConfiguration] -> ShowS
show :: PackagingConfiguration -> String
$cshow :: PackagingConfiguration -> String
showsPrec :: Int -> PackagingConfiguration -> ShowS
$cshowsPrec :: Int -> PackagingConfiguration -> ShowS
Prelude.Show, forall x. Rep PackagingConfiguration x -> PackagingConfiguration
forall x. PackagingConfiguration -> Rep PackagingConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PackagingConfiguration x -> PackagingConfiguration
$cfrom :: forall x. PackagingConfiguration -> Rep PackagingConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'PackagingConfiguration' 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:
--
-- 'arn', 'packagingConfiguration_arn' - The ARN of the PackagingConfiguration.
--
-- 'cmafPackage', 'packagingConfiguration_cmafPackage' - Undocumented member.
--
-- 'dashPackage', 'packagingConfiguration_dashPackage' - Undocumented member.
--
-- 'hlsPackage', 'packagingConfiguration_hlsPackage' - Undocumented member.
--
-- 'id', 'packagingConfiguration_id' - The ID of the PackagingConfiguration.
--
-- 'mssPackage', 'packagingConfiguration_mssPackage' - Undocumented member.
--
-- 'packagingGroupId', 'packagingConfiguration_packagingGroupId' - The ID of a PackagingGroup.
--
-- 'tags', 'packagingConfiguration_tags' - Undocumented member.
newPackagingConfiguration ::
  PackagingConfiguration
newPackagingConfiguration :: PackagingConfiguration
newPackagingConfiguration =
  PackagingConfiguration'
    { $sel:arn:PackagingConfiguration' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:cmafPackage:PackagingConfiguration' :: Maybe CmafPackage
cmafPackage = forall a. Maybe a
Prelude.Nothing,
      $sel:dashPackage:PackagingConfiguration' :: Maybe DashPackage
dashPackage = forall a. Maybe a
Prelude.Nothing,
      $sel:hlsPackage:PackagingConfiguration' :: Maybe HlsPackage
hlsPackage = forall a. Maybe a
Prelude.Nothing,
      $sel:id:PackagingConfiguration' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:mssPackage:PackagingConfiguration' :: Maybe MssPackage
mssPackage = forall a. Maybe a
Prelude.Nothing,
      $sel:packagingGroupId:PackagingConfiguration' :: Maybe Text
packagingGroupId = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:PackagingConfiguration' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing
    }

-- | The ARN of the PackagingConfiguration.
packagingConfiguration_arn :: Lens.Lens' PackagingConfiguration (Prelude.Maybe Prelude.Text)
packagingConfiguration_arn :: Lens' PackagingConfiguration (Maybe Text)
packagingConfiguration_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PackagingConfiguration' {Maybe Text
arn :: Maybe Text
$sel:arn:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
arn} -> Maybe Text
arn) (\s :: PackagingConfiguration
s@PackagingConfiguration' {} Maybe Text
a -> PackagingConfiguration
s {$sel:arn:PackagingConfiguration' :: Maybe Text
arn = Maybe Text
a} :: PackagingConfiguration)

-- | Undocumented member.
packagingConfiguration_cmafPackage :: Lens.Lens' PackagingConfiguration (Prelude.Maybe CmafPackage)
packagingConfiguration_cmafPackage :: Lens' PackagingConfiguration (Maybe CmafPackage)
packagingConfiguration_cmafPackage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PackagingConfiguration' {Maybe CmafPackage
cmafPackage :: Maybe CmafPackage
$sel:cmafPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe CmafPackage
cmafPackage} -> Maybe CmafPackage
cmafPackage) (\s :: PackagingConfiguration
s@PackagingConfiguration' {} Maybe CmafPackage
a -> PackagingConfiguration
s {$sel:cmafPackage:PackagingConfiguration' :: Maybe CmafPackage
cmafPackage = Maybe CmafPackage
a} :: PackagingConfiguration)

-- | Undocumented member.
packagingConfiguration_dashPackage :: Lens.Lens' PackagingConfiguration (Prelude.Maybe DashPackage)
packagingConfiguration_dashPackage :: Lens' PackagingConfiguration (Maybe DashPackage)
packagingConfiguration_dashPackage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PackagingConfiguration' {Maybe DashPackage
dashPackage :: Maybe DashPackage
$sel:dashPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe DashPackage
dashPackage} -> Maybe DashPackage
dashPackage) (\s :: PackagingConfiguration
s@PackagingConfiguration' {} Maybe DashPackage
a -> PackagingConfiguration
s {$sel:dashPackage:PackagingConfiguration' :: Maybe DashPackage
dashPackage = Maybe DashPackage
a} :: PackagingConfiguration)

-- | Undocumented member.
packagingConfiguration_hlsPackage :: Lens.Lens' PackagingConfiguration (Prelude.Maybe HlsPackage)
packagingConfiguration_hlsPackage :: Lens' PackagingConfiguration (Maybe HlsPackage)
packagingConfiguration_hlsPackage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PackagingConfiguration' {Maybe HlsPackage
hlsPackage :: Maybe HlsPackage
$sel:hlsPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe HlsPackage
hlsPackage} -> Maybe HlsPackage
hlsPackage) (\s :: PackagingConfiguration
s@PackagingConfiguration' {} Maybe HlsPackage
a -> PackagingConfiguration
s {$sel:hlsPackage:PackagingConfiguration' :: Maybe HlsPackage
hlsPackage = Maybe HlsPackage
a} :: PackagingConfiguration)

-- | The ID of the PackagingConfiguration.
packagingConfiguration_id :: Lens.Lens' PackagingConfiguration (Prelude.Maybe Prelude.Text)
packagingConfiguration_id :: Lens' PackagingConfiguration (Maybe Text)
packagingConfiguration_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PackagingConfiguration' {Maybe Text
id :: Maybe Text
$sel:id:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
id} -> Maybe Text
id) (\s :: PackagingConfiguration
s@PackagingConfiguration' {} Maybe Text
a -> PackagingConfiguration
s {$sel:id:PackagingConfiguration' :: Maybe Text
id = Maybe Text
a} :: PackagingConfiguration)

-- | Undocumented member.
packagingConfiguration_mssPackage :: Lens.Lens' PackagingConfiguration (Prelude.Maybe MssPackage)
packagingConfiguration_mssPackage :: Lens' PackagingConfiguration (Maybe MssPackage)
packagingConfiguration_mssPackage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PackagingConfiguration' {Maybe MssPackage
mssPackage :: Maybe MssPackage
$sel:mssPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe MssPackage
mssPackage} -> Maybe MssPackage
mssPackage) (\s :: PackagingConfiguration
s@PackagingConfiguration' {} Maybe MssPackage
a -> PackagingConfiguration
s {$sel:mssPackage:PackagingConfiguration' :: Maybe MssPackage
mssPackage = Maybe MssPackage
a} :: PackagingConfiguration)

-- | The ID of a PackagingGroup.
packagingConfiguration_packagingGroupId :: Lens.Lens' PackagingConfiguration (Prelude.Maybe Prelude.Text)
packagingConfiguration_packagingGroupId :: Lens' PackagingConfiguration (Maybe Text)
packagingConfiguration_packagingGroupId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PackagingConfiguration' {Maybe Text
packagingGroupId :: Maybe Text
$sel:packagingGroupId:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
packagingGroupId} -> Maybe Text
packagingGroupId) (\s :: PackagingConfiguration
s@PackagingConfiguration' {} Maybe Text
a -> PackagingConfiguration
s {$sel:packagingGroupId:PackagingConfiguration' :: Maybe Text
packagingGroupId = Maybe Text
a} :: PackagingConfiguration)

-- | Undocumented member.
packagingConfiguration_tags :: Lens.Lens' PackagingConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
packagingConfiguration_tags :: Lens' PackagingConfiguration (Maybe (HashMap Text Text))
packagingConfiguration_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PackagingConfiguration' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:PackagingConfiguration' :: PackagingConfiguration -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: PackagingConfiguration
s@PackagingConfiguration' {} Maybe (HashMap Text Text)
a -> PackagingConfiguration
s {$sel:tags:PackagingConfiguration' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: PackagingConfiguration) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON PackagingConfiguration where
  parseJSON :: Value -> Parser PackagingConfiguration
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"PackagingConfiguration"
      ( \Object
x ->
          Maybe Text
-> Maybe CmafPackage
-> Maybe DashPackage
-> Maybe HlsPackage
-> Maybe Text
-> Maybe MssPackage
-> Maybe Text
-> Maybe (HashMap Text Text)
-> PackagingConfiguration
PackagingConfiguration'
            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
"arn")
            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
"cmafPackage")
            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
"dashPackage")
            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
"hlsPackage")
            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
"id")
            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
"mssPackage")
            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
"packagingGroupId")
            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
"tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable PackagingConfiguration where
  hashWithSalt :: Int -> PackagingConfiguration -> Int
hashWithSalt Int
_salt PackagingConfiguration' {Maybe Text
Maybe (HashMap Text Text)
Maybe MssPackage
Maybe HlsPackage
Maybe CmafPackage
Maybe DashPackage
tags :: Maybe (HashMap Text Text)
packagingGroupId :: Maybe Text
mssPackage :: Maybe MssPackage
id :: Maybe Text
hlsPackage :: Maybe HlsPackage
dashPackage :: Maybe DashPackage
cmafPackage :: Maybe CmafPackage
arn :: Maybe Text
$sel:tags:PackagingConfiguration' :: PackagingConfiguration -> Maybe (HashMap Text Text)
$sel:packagingGroupId:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
$sel:mssPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe MssPackage
$sel:id:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
$sel:hlsPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe HlsPackage
$sel:dashPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe DashPackage
$sel:cmafPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe CmafPackage
$sel:arn:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CmafPackage
cmafPackage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DashPackage
dashPackage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HlsPackage
hlsPackage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MssPackage
mssPackage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
packagingGroupId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags

instance Prelude.NFData PackagingConfiguration where
  rnf :: PackagingConfiguration -> ()
rnf PackagingConfiguration' {Maybe Text
Maybe (HashMap Text Text)
Maybe MssPackage
Maybe HlsPackage
Maybe CmafPackage
Maybe DashPackage
tags :: Maybe (HashMap Text Text)
packagingGroupId :: Maybe Text
mssPackage :: Maybe MssPackage
id :: Maybe Text
hlsPackage :: Maybe HlsPackage
dashPackage :: Maybe DashPackage
cmafPackage :: Maybe CmafPackage
arn :: Maybe Text
$sel:tags:PackagingConfiguration' :: PackagingConfiguration -> Maybe (HashMap Text Text)
$sel:packagingGroupId:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
$sel:mssPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe MssPackage
$sel:id:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
$sel:hlsPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe HlsPackage
$sel:dashPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe DashPackage
$sel:cmafPackage:PackagingConfiguration' :: PackagingConfiguration -> Maybe CmafPackage
$sel:arn:PackagingConfiguration' :: PackagingConfiguration -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CmafPackage
cmafPackage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DashPackage
dashPackage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HlsPackage
hlsPackage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MssPackage
mssPackage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
packagingGroupId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags