module Stratosphere.VpcLattice.Rule.MatchProperty (
        module Exports, MatchProperty(..), mkMatchProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.VpcLattice.Rule.HttpMatchProperty as Exports
import Stratosphere.ResourceProperties
data MatchProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-vpclattice-rule-match.html>
    MatchProperty {MatchProperty -> ()
haddock_workaround_ :: (),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-vpclattice-rule-match.html#cfn-vpclattice-rule-match-httpmatch>
                   MatchProperty -> HttpMatchProperty
httpMatch :: HttpMatchProperty}
  deriving stock (MatchProperty -> MatchProperty -> Bool
(MatchProperty -> MatchProperty -> Bool)
-> (MatchProperty -> MatchProperty -> Bool) -> Eq MatchProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MatchProperty -> MatchProperty -> Bool
== :: MatchProperty -> MatchProperty -> Bool
$c/= :: MatchProperty -> MatchProperty -> Bool
/= :: MatchProperty -> MatchProperty -> Bool
Prelude.Eq, Int -> MatchProperty -> ShowS
[MatchProperty] -> ShowS
MatchProperty -> String
(Int -> MatchProperty -> ShowS)
-> (MatchProperty -> String)
-> ([MatchProperty] -> ShowS)
-> Show MatchProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MatchProperty -> ShowS
showsPrec :: Int -> MatchProperty -> ShowS
$cshow :: MatchProperty -> String
show :: MatchProperty -> String
$cshowList :: [MatchProperty] -> ShowS
showList :: [MatchProperty] -> ShowS
Prelude.Show)
mkMatchProperty :: HttpMatchProperty -> MatchProperty
mkMatchProperty :: HttpMatchProperty -> MatchProperty
mkMatchProperty HttpMatchProperty
httpMatch
  = MatchProperty {haddock_workaround_ :: ()
haddock_workaround_ = (), httpMatch :: HttpMatchProperty
httpMatch = HttpMatchProperty
httpMatch}
instance ToResourceProperties MatchProperty where
  toResourceProperties :: MatchProperty -> ResourceProperties
toResourceProperties MatchProperty {()
HttpMatchProperty
haddock_workaround_ :: MatchProperty -> ()
httpMatch :: MatchProperty -> HttpMatchProperty
haddock_workaround_ :: ()
httpMatch :: HttpMatchProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::VpcLattice::Rule.Match",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Key
"HttpMatch" Key -> HttpMatchProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= HttpMatchProperty
httpMatch]}
instance JSON.ToJSON MatchProperty where
  toJSON :: MatchProperty -> Value
toJSON MatchProperty {()
HttpMatchProperty
haddock_workaround_ :: MatchProperty -> ()
httpMatch :: MatchProperty -> HttpMatchProperty
haddock_workaround_ :: ()
httpMatch :: HttpMatchProperty
..}
    = [(Key, Value)] -> Value
JSON.object [Key
"HttpMatch" Key -> HttpMatchProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= HttpMatchProperty
httpMatch]
instance Property "HttpMatch" MatchProperty where
  type PropertyType "HttpMatch" MatchProperty = HttpMatchProperty
  set :: PropertyType "HttpMatch" MatchProperty
-> MatchProperty -> MatchProperty
set PropertyType "HttpMatch" MatchProperty
newValue MatchProperty {()
HttpMatchProperty
haddock_workaround_ :: MatchProperty -> ()
httpMatch :: MatchProperty -> HttpMatchProperty
haddock_workaround_ :: ()
httpMatch :: HttpMatchProperty
..}
    = MatchProperty {httpMatch :: HttpMatchProperty
httpMatch = PropertyType "HttpMatch" MatchProperty
HttpMatchProperty
newValue, ()
haddock_workaround_ :: ()
haddock_workaround_ :: ()
..}