{-# 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.CloudFront.Types.StreamingDistributionConfig
-- 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.CloudFront.Types.StreamingDistributionConfig where

import Amazonka.CloudFront.Types.Aliases
import Amazonka.CloudFront.Types.PriceClass
import Amazonka.CloudFront.Types.S3Origin
import Amazonka.CloudFront.Types.StreamingLoggingConfig
import Amazonka.CloudFront.Types.TrustedSigners
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | The RTMP distribution\'s configuration information.
--
-- /See:/ 'newStreamingDistributionConfig' smart constructor.
data StreamingDistributionConfig = StreamingDistributionConfig'
  { -- | A complex type that contains information about CNAMEs (alternate domain
    -- names), if any, for this streaming distribution.
    StreamingDistributionConfig -> Maybe Aliases
aliases :: Prelude.Maybe Aliases,
    -- | A complex type that controls whether access logs are written for the
    -- streaming distribution.
    StreamingDistributionConfig -> Maybe StreamingLoggingConfig
logging :: Prelude.Maybe StreamingLoggingConfig,
    -- | A complex type that contains information about price class for this
    -- streaming distribution.
    StreamingDistributionConfig -> Maybe PriceClass
priceClass :: Prelude.Maybe PriceClass,
    -- | A unique value (for example, a date-time stamp) that ensures that the
    -- request can\'t be replayed.
    --
    -- If the value of @CallerReference@ is new (regardless of the content of
    -- the @StreamingDistributionConfig@ object), CloudFront creates a new
    -- distribution.
    --
    -- If @CallerReference@ is a value that you already sent in a previous
    -- request to create a distribution, CloudFront returns a
    -- @DistributionAlreadyExists@ error.
    StreamingDistributionConfig -> Text
callerReference :: Prelude.Text,
    -- | A complex type that contains information about the Amazon S3 bucket from
    -- which you want CloudFront to get your media files for distribution.
    StreamingDistributionConfig -> S3Origin
s3Origin :: S3Origin,
    -- | Any comments you want to include about the streaming distribution.
    StreamingDistributionConfig -> Text
comment :: Prelude.Text,
    -- | A complex type that specifies any Amazon Web Services accounts that you
    -- want to permit to create signed URLs for private content. If you want
    -- the distribution to use signed URLs, include this element; if you want
    -- the distribution to use public URLs, remove this element. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html Serving Private Content through CloudFront>
    -- in the /Amazon CloudFront Developer Guide/.
    StreamingDistributionConfig -> TrustedSigners
trustedSigners :: TrustedSigners,
    -- | Whether the streaming distribution is enabled to accept user requests
    -- for content.
    StreamingDistributionConfig -> Bool
enabled :: Prelude.Bool
  }
  deriving (StreamingDistributionConfig -> StreamingDistributionConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StreamingDistributionConfig -> StreamingDistributionConfig -> Bool
$c/= :: StreamingDistributionConfig -> StreamingDistributionConfig -> Bool
== :: StreamingDistributionConfig -> StreamingDistributionConfig -> Bool
$c== :: StreamingDistributionConfig -> StreamingDistributionConfig -> Bool
Prelude.Eq, ReadPrec [StreamingDistributionConfig]
ReadPrec StreamingDistributionConfig
Int -> ReadS StreamingDistributionConfig
ReadS [StreamingDistributionConfig]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StreamingDistributionConfig]
$creadListPrec :: ReadPrec [StreamingDistributionConfig]
readPrec :: ReadPrec StreamingDistributionConfig
$creadPrec :: ReadPrec StreamingDistributionConfig
readList :: ReadS [StreamingDistributionConfig]
$creadList :: ReadS [StreamingDistributionConfig]
readsPrec :: Int -> ReadS StreamingDistributionConfig
$creadsPrec :: Int -> ReadS StreamingDistributionConfig
Prelude.Read, Int -> StreamingDistributionConfig -> ShowS
[StreamingDistributionConfig] -> ShowS
StreamingDistributionConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StreamingDistributionConfig] -> ShowS
$cshowList :: [StreamingDistributionConfig] -> ShowS
show :: StreamingDistributionConfig -> String
$cshow :: StreamingDistributionConfig -> String
showsPrec :: Int -> StreamingDistributionConfig -> ShowS
$cshowsPrec :: Int -> StreamingDistributionConfig -> ShowS
Prelude.Show, forall x.
Rep StreamingDistributionConfig x -> StreamingDistributionConfig
forall x.
StreamingDistributionConfig -> Rep StreamingDistributionConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StreamingDistributionConfig x -> StreamingDistributionConfig
$cfrom :: forall x.
StreamingDistributionConfig -> Rep StreamingDistributionConfig x
Prelude.Generic)

-- |
-- Create a value of 'StreamingDistributionConfig' 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:
--
-- 'aliases', 'streamingDistributionConfig_aliases' - A complex type that contains information about CNAMEs (alternate domain
-- names), if any, for this streaming distribution.
--
-- 'logging', 'streamingDistributionConfig_logging' - A complex type that controls whether access logs are written for the
-- streaming distribution.
--
-- 'priceClass', 'streamingDistributionConfig_priceClass' - A complex type that contains information about price class for this
-- streaming distribution.
--
-- 'callerReference', 'streamingDistributionConfig_callerReference' - A unique value (for example, a date-time stamp) that ensures that the
-- request can\'t be replayed.
--
-- If the value of @CallerReference@ is new (regardless of the content of
-- the @StreamingDistributionConfig@ object), CloudFront creates a new
-- distribution.
--
-- If @CallerReference@ is a value that you already sent in a previous
-- request to create a distribution, CloudFront returns a
-- @DistributionAlreadyExists@ error.
--
-- 's3Origin', 'streamingDistributionConfig_s3Origin' - A complex type that contains information about the Amazon S3 bucket from
-- which you want CloudFront to get your media files for distribution.
--
-- 'comment', 'streamingDistributionConfig_comment' - Any comments you want to include about the streaming distribution.
--
-- 'trustedSigners', 'streamingDistributionConfig_trustedSigners' - A complex type that specifies any Amazon Web Services accounts that you
-- want to permit to create signed URLs for private content. If you want
-- the distribution to use signed URLs, include this element; if you want
-- the distribution to use public URLs, remove this element. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html Serving Private Content through CloudFront>
-- in the /Amazon CloudFront Developer Guide/.
--
-- 'enabled', 'streamingDistributionConfig_enabled' - Whether the streaming distribution is enabled to accept user requests
-- for content.
newStreamingDistributionConfig ::
  -- | 'callerReference'
  Prelude.Text ->
  -- | 's3Origin'
  S3Origin ->
  -- | 'comment'
  Prelude.Text ->
  -- | 'trustedSigners'
  TrustedSigners ->
  -- | 'enabled'
  Prelude.Bool ->
  StreamingDistributionConfig
newStreamingDistributionConfig :: Text
-> S3Origin
-> Text
-> TrustedSigners
-> Bool
-> StreamingDistributionConfig
newStreamingDistributionConfig
  Text
pCallerReference_
  S3Origin
pS3Origin_
  Text
pComment_
  TrustedSigners
pTrustedSigners_
  Bool
pEnabled_ =
    StreamingDistributionConfig'
      { $sel:aliases:StreamingDistributionConfig' :: Maybe Aliases
aliases =
          forall a. Maybe a
Prelude.Nothing,
        $sel:logging:StreamingDistributionConfig' :: Maybe StreamingLoggingConfig
logging = forall a. Maybe a
Prelude.Nothing,
        $sel:priceClass:StreamingDistributionConfig' :: Maybe PriceClass
priceClass = forall a. Maybe a
Prelude.Nothing,
        $sel:callerReference:StreamingDistributionConfig' :: Text
callerReference = Text
pCallerReference_,
        $sel:s3Origin:StreamingDistributionConfig' :: S3Origin
s3Origin = S3Origin
pS3Origin_,
        $sel:comment:StreamingDistributionConfig' :: Text
comment = Text
pComment_,
        $sel:trustedSigners:StreamingDistributionConfig' :: TrustedSigners
trustedSigners = TrustedSigners
pTrustedSigners_,
        $sel:enabled:StreamingDistributionConfig' :: Bool
enabled = Bool
pEnabled_
      }

-- | A complex type that contains information about CNAMEs (alternate domain
-- names), if any, for this streaming distribution.
streamingDistributionConfig_aliases :: Lens.Lens' StreamingDistributionConfig (Prelude.Maybe Aliases)
streamingDistributionConfig_aliases :: Lens' StreamingDistributionConfig (Maybe Aliases)
streamingDistributionConfig_aliases = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StreamingDistributionConfig' {Maybe Aliases
aliases :: Maybe Aliases
$sel:aliases:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe Aliases
aliases} -> Maybe Aliases
aliases) (\s :: StreamingDistributionConfig
s@StreamingDistributionConfig' {} Maybe Aliases
a -> StreamingDistributionConfig
s {$sel:aliases:StreamingDistributionConfig' :: Maybe Aliases
aliases = Maybe Aliases
a} :: StreamingDistributionConfig)

-- | A complex type that controls whether access logs are written for the
-- streaming distribution.
streamingDistributionConfig_logging :: Lens.Lens' StreamingDistributionConfig (Prelude.Maybe StreamingLoggingConfig)
streamingDistributionConfig_logging :: Lens' StreamingDistributionConfig (Maybe StreamingLoggingConfig)
streamingDistributionConfig_logging = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StreamingDistributionConfig' {Maybe StreamingLoggingConfig
logging :: Maybe StreamingLoggingConfig
$sel:logging:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe StreamingLoggingConfig
logging} -> Maybe StreamingLoggingConfig
logging) (\s :: StreamingDistributionConfig
s@StreamingDistributionConfig' {} Maybe StreamingLoggingConfig
a -> StreamingDistributionConfig
s {$sel:logging:StreamingDistributionConfig' :: Maybe StreamingLoggingConfig
logging = Maybe StreamingLoggingConfig
a} :: StreamingDistributionConfig)

-- | A complex type that contains information about price class for this
-- streaming distribution.
streamingDistributionConfig_priceClass :: Lens.Lens' StreamingDistributionConfig (Prelude.Maybe PriceClass)
streamingDistributionConfig_priceClass :: Lens' StreamingDistributionConfig (Maybe PriceClass)
streamingDistributionConfig_priceClass = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StreamingDistributionConfig' {Maybe PriceClass
priceClass :: Maybe PriceClass
$sel:priceClass:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe PriceClass
priceClass} -> Maybe PriceClass
priceClass) (\s :: StreamingDistributionConfig
s@StreamingDistributionConfig' {} Maybe PriceClass
a -> StreamingDistributionConfig
s {$sel:priceClass:StreamingDistributionConfig' :: Maybe PriceClass
priceClass = Maybe PriceClass
a} :: StreamingDistributionConfig)

-- | A unique value (for example, a date-time stamp) that ensures that the
-- request can\'t be replayed.
--
-- If the value of @CallerReference@ is new (regardless of the content of
-- the @StreamingDistributionConfig@ object), CloudFront creates a new
-- distribution.
--
-- If @CallerReference@ is a value that you already sent in a previous
-- request to create a distribution, CloudFront returns a
-- @DistributionAlreadyExists@ error.
streamingDistributionConfig_callerReference :: Lens.Lens' StreamingDistributionConfig Prelude.Text
streamingDistributionConfig_callerReference :: Lens' StreamingDistributionConfig Text
streamingDistributionConfig_callerReference = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StreamingDistributionConfig' {Text
callerReference :: Text
$sel:callerReference:StreamingDistributionConfig' :: StreamingDistributionConfig -> Text
callerReference} -> Text
callerReference) (\s :: StreamingDistributionConfig
s@StreamingDistributionConfig' {} Text
a -> StreamingDistributionConfig
s {$sel:callerReference:StreamingDistributionConfig' :: Text
callerReference = Text
a} :: StreamingDistributionConfig)

-- | A complex type that contains information about the Amazon S3 bucket from
-- which you want CloudFront to get your media files for distribution.
streamingDistributionConfig_s3Origin :: Lens.Lens' StreamingDistributionConfig S3Origin
streamingDistributionConfig_s3Origin :: Lens' StreamingDistributionConfig S3Origin
streamingDistributionConfig_s3Origin = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StreamingDistributionConfig' {S3Origin
s3Origin :: S3Origin
$sel:s3Origin:StreamingDistributionConfig' :: StreamingDistributionConfig -> S3Origin
s3Origin} -> S3Origin
s3Origin) (\s :: StreamingDistributionConfig
s@StreamingDistributionConfig' {} S3Origin
a -> StreamingDistributionConfig
s {$sel:s3Origin:StreamingDistributionConfig' :: S3Origin
s3Origin = S3Origin
a} :: StreamingDistributionConfig)

-- | Any comments you want to include about the streaming distribution.
streamingDistributionConfig_comment :: Lens.Lens' StreamingDistributionConfig Prelude.Text
streamingDistributionConfig_comment :: Lens' StreamingDistributionConfig Text
streamingDistributionConfig_comment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StreamingDistributionConfig' {Text
comment :: Text
$sel:comment:StreamingDistributionConfig' :: StreamingDistributionConfig -> Text
comment} -> Text
comment) (\s :: StreamingDistributionConfig
s@StreamingDistributionConfig' {} Text
a -> StreamingDistributionConfig
s {$sel:comment:StreamingDistributionConfig' :: Text
comment = Text
a} :: StreamingDistributionConfig)

-- | A complex type that specifies any Amazon Web Services accounts that you
-- want to permit to create signed URLs for private content. If you want
-- the distribution to use signed URLs, include this element; if you want
-- the distribution to use public URLs, remove this element. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html Serving Private Content through CloudFront>
-- in the /Amazon CloudFront Developer Guide/.
streamingDistributionConfig_trustedSigners :: Lens.Lens' StreamingDistributionConfig TrustedSigners
streamingDistributionConfig_trustedSigners :: Lens' StreamingDistributionConfig TrustedSigners
streamingDistributionConfig_trustedSigners = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StreamingDistributionConfig' {TrustedSigners
trustedSigners :: TrustedSigners
$sel:trustedSigners:StreamingDistributionConfig' :: StreamingDistributionConfig -> TrustedSigners
trustedSigners} -> TrustedSigners
trustedSigners) (\s :: StreamingDistributionConfig
s@StreamingDistributionConfig' {} TrustedSigners
a -> StreamingDistributionConfig
s {$sel:trustedSigners:StreamingDistributionConfig' :: TrustedSigners
trustedSigners = TrustedSigners
a} :: StreamingDistributionConfig)

-- | Whether the streaming distribution is enabled to accept user requests
-- for content.
streamingDistributionConfig_enabled :: Lens.Lens' StreamingDistributionConfig Prelude.Bool
streamingDistributionConfig_enabled :: Lens' StreamingDistributionConfig Bool
streamingDistributionConfig_enabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StreamingDistributionConfig' {Bool
enabled :: Bool
$sel:enabled:StreamingDistributionConfig' :: StreamingDistributionConfig -> Bool
enabled} -> Bool
enabled) (\s :: StreamingDistributionConfig
s@StreamingDistributionConfig' {} Bool
a -> StreamingDistributionConfig
s {$sel:enabled:StreamingDistributionConfig' :: Bool
enabled = Bool
a} :: StreamingDistributionConfig)

instance Data.FromXML StreamingDistributionConfig where
  parseXML :: [Node] -> Either String StreamingDistributionConfig
parseXML [Node]
x =
    Maybe Aliases
-> Maybe StreamingLoggingConfig
-> Maybe PriceClass
-> Text
-> S3Origin
-> Text
-> TrustedSigners
-> Bool
-> StreamingDistributionConfig
StreamingDistributionConfig'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Aliases")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Logging")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"PriceClass")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"CallerReference")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"S3Origin")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Comment")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"TrustedSigners")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Enabled")

instance Prelude.Hashable StreamingDistributionConfig where
  hashWithSalt :: Int -> StreamingDistributionConfig -> Int
hashWithSalt Int
_salt StreamingDistributionConfig' {Bool
Maybe Aliases
Maybe PriceClass
Maybe StreamingLoggingConfig
Text
S3Origin
TrustedSigners
enabled :: Bool
trustedSigners :: TrustedSigners
comment :: Text
s3Origin :: S3Origin
callerReference :: Text
priceClass :: Maybe PriceClass
logging :: Maybe StreamingLoggingConfig
aliases :: Maybe Aliases
$sel:enabled:StreamingDistributionConfig' :: StreamingDistributionConfig -> Bool
$sel:trustedSigners:StreamingDistributionConfig' :: StreamingDistributionConfig -> TrustedSigners
$sel:comment:StreamingDistributionConfig' :: StreamingDistributionConfig -> Text
$sel:s3Origin:StreamingDistributionConfig' :: StreamingDistributionConfig -> S3Origin
$sel:callerReference:StreamingDistributionConfig' :: StreamingDistributionConfig -> Text
$sel:priceClass:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe PriceClass
$sel:logging:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe StreamingLoggingConfig
$sel:aliases:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe Aliases
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Aliases
aliases
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StreamingLoggingConfig
logging
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PriceClass
priceClass
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
callerReference
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` S3Origin
s3Origin
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
comment
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` TrustedSigners
trustedSigners
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Bool
enabled

instance Prelude.NFData StreamingDistributionConfig where
  rnf :: StreamingDistributionConfig -> ()
rnf StreamingDistributionConfig' {Bool
Maybe Aliases
Maybe PriceClass
Maybe StreamingLoggingConfig
Text
S3Origin
TrustedSigners
enabled :: Bool
trustedSigners :: TrustedSigners
comment :: Text
s3Origin :: S3Origin
callerReference :: Text
priceClass :: Maybe PriceClass
logging :: Maybe StreamingLoggingConfig
aliases :: Maybe Aliases
$sel:enabled:StreamingDistributionConfig' :: StreamingDistributionConfig -> Bool
$sel:trustedSigners:StreamingDistributionConfig' :: StreamingDistributionConfig -> TrustedSigners
$sel:comment:StreamingDistributionConfig' :: StreamingDistributionConfig -> Text
$sel:s3Origin:StreamingDistributionConfig' :: StreamingDistributionConfig -> S3Origin
$sel:callerReference:StreamingDistributionConfig' :: StreamingDistributionConfig -> Text
$sel:priceClass:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe PriceClass
$sel:logging:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe StreamingLoggingConfig
$sel:aliases:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe Aliases
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Aliases
aliases
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StreamingLoggingConfig
logging
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PriceClass
priceClass
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
callerReference
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf S3Origin
s3Origin
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
comment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf TrustedSigners
trustedSigners
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Bool
enabled

instance Data.ToXML StreamingDistributionConfig where
  toXML :: StreamingDistributionConfig -> XML
toXML StreamingDistributionConfig' {Bool
Maybe Aliases
Maybe PriceClass
Maybe StreamingLoggingConfig
Text
S3Origin
TrustedSigners
enabled :: Bool
trustedSigners :: TrustedSigners
comment :: Text
s3Origin :: S3Origin
callerReference :: Text
priceClass :: Maybe PriceClass
logging :: Maybe StreamingLoggingConfig
aliases :: Maybe Aliases
$sel:enabled:StreamingDistributionConfig' :: StreamingDistributionConfig -> Bool
$sel:trustedSigners:StreamingDistributionConfig' :: StreamingDistributionConfig -> TrustedSigners
$sel:comment:StreamingDistributionConfig' :: StreamingDistributionConfig -> Text
$sel:s3Origin:StreamingDistributionConfig' :: StreamingDistributionConfig -> S3Origin
$sel:callerReference:StreamingDistributionConfig' :: StreamingDistributionConfig -> Text
$sel:priceClass:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe PriceClass
$sel:logging:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe StreamingLoggingConfig
$sel:aliases:StreamingDistributionConfig' :: StreamingDistributionConfig -> Maybe Aliases
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ Name
"Aliases" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe Aliases
aliases,
        Name
"Logging" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe StreamingLoggingConfig
logging,
        Name
"PriceClass" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe PriceClass
priceClass,
        Name
"CallerReference" forall a. ToXML a => Name -> a -> XML
Data.@= Text
callerReference,
        Name
"S3Origin" forall a. ToXML a => Name -> a -> XML
Data.@= S3Origin
s3Origin,
        Name
"Comment" forall a. ToXML a => Name -> a -> XML
Data.@= Text
comment,
        Name
"TrustedSigners" forall a. ToXML a => Name -> a -> XML
Data.@= TrustedSigners
trustedSigners,
        Name
"Enabled" forall a. ToXML a => Name -> a -> XML
Data.@= Bool
enabled
      ]