module Stratosphere.MediaTailor.ChannelPolicy (
        ChannelPolicy(..), mkChannelPolicy
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import Stratosphere.ResourceProperties
import Stratosphere.Value
data ChannelPolicy
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediatailor-channelpolicy.html>
    ChannelPolicy {ChannelPolicy -> ()
haddock_workaround_ :: (),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediatailor-channelpolicy.html#cfn-mediatailor-channelpolicy-channelname>
                   ChannelPolicy -> Value Text
channelName :: (Value Prelude.Text),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediatailor-channelpolicy.html#cfn-mediatailor-channelpolicy-policy>
                   ChannelPolicy -> Object
policy :: JSON.Object}
  deriving stock (ChannelPolicy -> ChannelPolicy -> Bool
(ChannelPolicy -> ChannelPolicy -> Bool)
-> (ChannelPolicy -> ChannelPolicy -> Bool) -> Eq ChannelPolicy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ChannelPolicy -> ChannelPolicy -> Bool
== :: ChannelPolicy -> ChannelPolicy -> Bool
$c/= :: ChannelPolicy -> ChannelPolicy -> Bool
/= :: ChannelPolicy -> ChannelPolicy -> Bool
Prelude.Eq, Int -> ChannelPolicy -> ShowS
[ChannelPolicy] -> ShowS
ChannelPolicy -> String
(Int -> ChannelPolicy -> ShowS)
-> (ChannelPolicy -> String)
-> ([ChannelPolicy] -> ShowS)
-> Show ChannelPolicy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ChannelPolicy -> ShowS
showsPrec :: Int -> ChannelPolicy -> ShowS
$cshow :: ChannelPolicy -> String
show :: ChannelPolicy -> String
$cshowList :: [ChannelPolicy] -> ShowS
showList :: [ChannelPolicy] -> ShowS
Prelude.Show)
mkChannelPolicy ::
  Value Prelude.Text -> JSON.Object -> ChannelPolicy
mkChannelPolicy :: Value Text -> Object -> ChannelPolicy
mkChannelPolicy Value Text
channelName Object
policy
  = ChannelPolicy
      {haddock_workaround_ :: ()
haddock_workaround_ = (), channelName :: Value Text
channelName = Value Text
channelName,
       policy :: Object
policy = Object
policy}
instance ToResourceProperties ChannelPolicy where
  toResourceProperties :: ChannelPolicy -> ResourceProperties
toResourceProperties ChannelPolicy {()
Object
Value Text
haddock_workaround_ :: ChannelPolicy -> ()
channelName :: ChannelPolicy -> Value Text
policy :: ChannelPolicy -> Object
haddock_workaround_ :: ()
channelName :: Value Text
policy :: Object
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::MediaTailor::ChannelPolicy",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Key
"ChannelName" Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= Value Text
channelName,
                       Key
"Policy" Key -> Object -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= Object
policy]}
instance JSON.ToJSON ChannelPolicy where
  toJSON :: ChannelPolicy -> Value
toJSON ChannelPolicy {()
Object
Value Text
haddock_workaround_ :: ChannelPolicy -> ()
channelName :: ChannelPolicy -> Value Text
policy :: ChannelPolicy -> Object
haddock_workaround_ :: ()
channelName :: Value Text
policy :: Object
..}
    = [(Key, Value)] -> Value
JSON.object
        [Key
"ChannelName" Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= Value Text
channelName, Key
"Policy" Key -> Object -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= Object
policy]
instance Property "ChannelName" ChannelPolicy where
  type PropertyType "ChannelName" ChannelPolicy = Value Prelude.Text
  set :: PropertyType "ChannelName" ChannelPolicy
-> ChannelPolicy -> ChannelPolicy
set PropertyType "ChannelName" ChannelPolicy
newValue ChannelPolicy {()
Object
Value Text
haddock_workaround_ :: ChannelPolicy -> ()
channelName :: ChannelPolicy -> Value Text
policy :: ChannelPolicy -> Object
haddock_workaround_ :: ()
channelName :: Value Text
policy :: Object
..}
    = ChannelPolicy {channelName :: Value Text
channelName = PropertyType "ChannelName" ChannelPolicy
Value Text
newValue, ()
Object
haddock_workaround_ :: ()
policy :: Object
haddock_workaround_ :: ()
policy :: Object
..}
instance Property "Policy" ChannelPolicy where
  type PropertyType "Policy" ChannelPolicy = JSON.Object
  set :: PropertyType "Policy" ChannelPolicy
-> ChannelPolicy -> ChannelPolicy
set PropertyType "Policy" ChannelPolicy
newValue ChannelPolicy {()
Object
Value Text
haddock_workaround_ :: ChannelPolicy -> ()
channelName :: ChannelPolicy -> Value Text
policy :: ChannelPolicy -> Object
haddock_workaround_ :: ()
channelName :: Value Text
policy :: Object
..}
    = ChannelPolicy {policy :: Object
policy = Object
PropertyType "Policy" ChannelPolicy
newValue, ()
Value Text
haddock_workaround_ :: ()
channelName :: Value Text
haddock_workaround_ :: ()
channelName :: Value Text
..}