module Stratosphere.CloudFront.StreamingDistribution (
        module Exports, StreamingDistribution(..), mkStreamingDistribution
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.CloudFront.StreamingDistribution.StreamingDistributionConfigProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Tag
data StreamingDistribution
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-streamingdistribution.html>
    StreamingDistribution {StreamingDistribution -> ()
haddock_workaround_ :: (),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-streamingdistribution.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig>
                           StreamingDistribution -> StreamingDistributionConfigProperty
streamingDistributionConfig :: StreamingDistributionConfigProperty,
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-streamingdistribution.html#cfn-cloudfront-streamingdistribution-tags>
                           StreamingDistribution -> [Tag]
tags :: [Tag]}
  deriving stock (StreamingDistribution -> StreamingDistribution -> Bool
(StreamingDistribution -> StreamingDistribution -> Bool)
-> (StreamingDistribution -> StreamingDistribution -> Bool)
-> Eq StreamingDistribution
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StreamingDistribution -> StreamingDistribution -> Bool
== :: StreamingDistribution -> StreamingDistribution -> Bool
$c/= :: StreamingDistribution -> StreamingDistribution -> Bool
/= :: StreamingDistribution -> StreamingDistribution -> Bool
Prelude.Eq, Int -> StreamingDistribution -> ShowS
[StreamingDistribution] -> ShowS
StreamingDistribution -> String
(Int -> StreamingDistribution -> ShowS)
-> (StreamingDistribution -> String)
-> ([StreamingDistribution] -> ShowS)
-> Show StreamingDistribution
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StreamingDistribution -> ShowS
showsPrec :: Int -> StreamingDistribution -> ShowS
$cshow :: StreamingDistribution -> String
show :: StreamingDistribution -> String
$cshowList :: [StreamingDistribution] -> ShowS
showList :: [StreamingDistribution] -> ShowS
Prelude.Show)
mkStreamingDistribution ::
  StreamingDistributionConfigProperty
  -> [Tag] -> StreamingDistribution
mkStreamingDistribution :: StreamingDistributionConfigProperty
-> [Tag] -> StreamingDistribution
mkStreamingDistribution StreamingDistributionConfigProperty
streamingDistributionConfig [Tag]
tags
  = StreamingDistribution
      {haddock_workaround_ :: ()
haddock_workaround_ = (),
       streamingDistributionConfig :: StreamingDistributionConfigProperty
streamingDistributionConfig = StreamingDistributionConfigProperty
streamingDistributionConfig,
       tags :: [Tag]
tags = [Tag]
tags}
instance ToResourceProperties StreamingDistribution where
  toResourceProperties :: StreamingDistribution -> ResourceProperties
toResourceProperties StreamingDistribution {[Tag]
()
StreamingDistributionConfigProperty
haddock_workaround_ :: StreamingDistribution -> ()
streamingDistributionConfig :: StreamingDistribution -> StreamingDistributionConfigProperty
tags :: StreamingDistribution -> [Tag]
haddock_workaround_ :: ()
streamingDistributionConfig :: StreamingDistributionConfigProperty
tags :: [Tag]
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::CloudFront::StreamingDistribution",
         supportsTags :: Bool
supportsTags = Bool
Prelude.True,
         properties :: Object
properties = [Key
"StreamingDistributionConfig"
                         Key -> StreamingDistributionConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= StreamingDistributionConfigProperty
streamingDistributionConfig,
                       Key
"Tags" Key -> [Tag] -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= [Tag]
tags]}
instance JSON.ToJSON StreamingDistribution where
  toJSON :: StreamingDistribution -> Value
toJSON StreamingDistribution {[Tag]
()
StreamingDistributionConfigProperty
haddock_workaround_ :: StreamingDistribution -> ()
streamingDistributionConfig :: StreamingDistribution -> StreamingDistributionConfigProperty
tags :: StreamingDistribution -> [Tag]
haddock_workaround_ :: ()
streamingDistributionConfig :: StreamingDistributionConfigProperty
tags :: [Tag]
..}
    = [(Key, Value)] -> Value
JSON.object
        [Key
"StreamingDistributionConfig" Key -> StreamingDistributionConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= StreamingDistributionConfigProperty
streamingDistributionConfig,
         Key
"Tags" Key -> [Tag] -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= [Tag]
tags]
instance Property "StreamingDistributionConfig" StreamingDistribution where
  type PropertyType "StreamingDistributionConfig" StreamingDistribution = StreamingDistributionConfigProperty
  set :: PropertyType "StreamingDistributionConfig" StreamingDistribution
-> StreamingDistribution -> StreamingDistribution
set PropertyType "StreamingDistributionConfig" StreamingDistribution
newValue StreamingDistribution {[Tag]
()
StreamingDistributionConfigProperty
haddock_workaround_ :: StreamingDistribution -> ()
streamingDistributionConfig :: StreamingDistribution -> StreamingDistributionConfigProperty
tags :: StreamingDistribution -> [Tag]
haddock_workaround_ :: ()
streamingDistributionConfig :: StreamingDistributionConfigProperty
tags :: [Tag]
..}
    = StreamingDistribution
        {streamingDistributionConfig :: StreamingDistributionConfigProperty
streamingDistributionConfig = PropertyType "StreamingDistributionConfig" StreamingDistribution
StreamingDistributionConfigProperty
newValue, [Tag]
()
haddock_workaround_ :: ()
tags :: [Tag]
haddock_workaround_ :: ()
tags :: [Tag]
..}
instance Property "Tags" StreamingDistribution where
  type PropertyType "Tags" StreamingDistribution = [Tag]
  set :: PropertyType "Tags" StreamingDistribution
-> StreamingDistribution -> StreamingDistribution
set PropertyType "Tags" StreamingDistribution
newValue StreamingDistribution {[Tag]
()
StreamingDistributionConfigProperty
haddock_workaround_ :: StreamingDistribution -> ()
streamingDistributionConfig :: StreamingDistribution -> StreamingDistributionConfigProperty
tags :: StreamingDistribution -> [Tag]
haddock_workaround_ :: ()
streamingDistributionConfig :: StreamingDistributionConfigProperty
tags :: [Tag]
..}
    = StreamingDistribution {tags :: [Tag]
tags = [Tag]
PropertyType "Tags" StreamingDistribution
newValue, ()
StreamingDistributionConfigProperty
haddock_workaround_ :: ()
streamingDistributionConfig :: StreamingDistributionConfigProperty
haddock_workaround_ :: ()
streamingDistributionConfig :: StreamingDistributionConfigProperty
..}