module Stratosphere.AppMesh.VirtualNode.ListenerTimeoutProperty (
        module Exports, ListenerTimeoutProperty(..),
        mkListenerTimeoutProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.AppMesh.VirtualNode.GrpcTimeoutProperty as Exports
import {-# SOURCE #-} Stratosphere.AppMesh.VirtualNode.HttpTimeoutProperty as Exports
import {-# SOURCE #-} Stratosphere.AppMesh.VirtualNode.TcpTimeoutProperty as Exports
import Stratosphere.ResourceProperties
data ListenerTimeoutProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertimeout.html>
    ListenerTimeoutProperty {ListenerTimeoutProperty -> ()
haddock_workaround_ :: (),
                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertimeout.html#cfn-appmesh-virtualnode-listenertimeout-grpc>
                             ListenerTimeoutProperty -> Maybe GrpcTimeoutProperty
gRPC :: (Prelude.Maybe GrpcTimeoutProperty),
                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertimeout.html#cfn-appmesh-virtualnode-listenertimeout-http>
                             ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
hTTP :: (Prelude.Maybe HttpTimeoutProperty),
                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertimeout.html#cfn-appmesh-virtualnode-listenertimeout-http2>
                             ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
hTTP2 :: (Prelude.Maybe HttpTimeoutProperty),
                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertimeout.html#cfn-appmesh-virtualnode-listenertimeout-tcp>
                             ListenerTimeoutProperty -> Maybe TcpTimeoutProperty
tCP :: (Prelude.Maybe TcpTimeoutProperty)}
  deriving stock (ListenerTimeoutProperty -> ListenerTimeoutProperty -> Bool
(ListenerTimeoutProperty -> ListenerTimeoutProperty -> Bool)
-> (ListenerTimeoutProperty -> ListenerTimeoutProperty -> Bool)
-> Eq ListenerTimeoutProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ListenerTimeoutProperty -> ListenerTimeoutProperty -> Bool
== :: ListenerTimeoutProperty -> ListenerTimeoutProperty -> Bool
$c/= :: ListenerTimeoutProperty -> ListenerTimeoutProperty -> Bool
/= :: ListenerTimeoutProperty -> ListenerTimeoutProperty -> Bool
Prelude.Eq, Int -> ListenerTimeoutProperty -> ShowS
[ListenerTimeoutProperty] -> ShowS
ListenerTimeoutProperty -> String
(Int -> ListenerTimeoutProperty -> ShowS)
-> (ListenerTimeoutProperty -> String)
-> ([ListenerTimeoutProperty] -> ShowS)
-> Show ListenerTimeoutProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ListenerTimeoutProperty -> ShowS
showsPrec :: Int -> ListenerTimeoutProperty -> ShowS
$cshow :: ListenerTimeoutProperty -> String
show :: ListenerTimeoutProperty -> String
$cshowList :: [ListenerTimeoutProperty] -> ShowS
showList :: [ListenerTimeoutProperty] -> ShowS
Prelude.Show)
mkListenerTimeoutProperty :: ListenerTimeoutProperty
mkListenerTimeoutProperty :: ListenerTimeoutProperty
mkListenerTimeoutProperty
  = ListenerTimeoutProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), gRPC :: Maybe GrpcTimeoutProperty
gRPC = Maybe GrpcTimeoutProperty
forall a. Maybe a
Prelude.Nothing,
       hTTP :: Maybe HttpTimeoutProperty
hTTP = Maybe HttpTimeoutProperty
forall a. Maybe a
Prelude.Nothing, hTTP2 :: Maybe HttpTimeoutProperty
hTTP2 = Maybe HttpTimeoutProperty
forall a. Maybe a
Prelude.Nothing,
       tCP :: Maybe TcpTimeoutProperty
tCP = Maybe TcpTimeoutProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties ListenerTimeoutProperty where
  toResourceProperties :: ListenerTimeoutProperty -> ResourceProperties
toResourceProperties ListenerTimeoutProperty {Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ListenerTimeoutProperty -> ()
gRPC :: ListenerTimeoutProperty -> Maybe GrpcTimeoutProperty
hTTP :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
hTTP2 :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
tCP :: ListenerTimeoutProperty -> Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::AppMesh::VirtualNode.ListenerTimeout",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Item Object] -> Object
forall l. IsList l => [Item l] -> l
Prelude.fromList
                        ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
                           [Key -> GrpcTimeoutProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"GRPC" (GrpcTimeoutProperty -> (Key, Value))
-> Maybe GrpcTimeoutProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe GrpcTimeoutProperty
gRPC,
                            Key -> HttpTimeoutProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"HTTP" (HttpTimeoutProperty -> (Key, Value))
-> Maybe HttpTimeoutProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HttpTimeoutProperty
hTTP,
                            Key -> HttpTimeoutProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"HTTP2" (HttpTimeoutProperty -> (Key, Value))
-> Maybe HttpTimeoutProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HttpTimeoutProperty
hTTP2,
                            Key -> TcpTimeoutProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"TCP" (TcpTimeoutProperty -> (Key, Value))
-> Maybe TcpTimeoutProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TcpTimeoutProperty
tCP])}
instance JSON.ToJSON ListenerTimeoutProperty where
  toJSON :: ListenerTimeoutProperty -> Value
toJSON ListenerTimeoutProperty {Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ListenerTimeoutProperty -> ()
gRPC :: ListenerTimeoutProperty -> Maybe GrpcTimeoutProperty
hTTP :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
hTTP2 :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
tCP :: ListenerTimeoutProperty -> Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
    = [(Key, Value)] -> Value
JSON.object
        ([Item [(Key, Value)]] -> [(Key, Value)]
forall l. IsList l => [Item l] -> l
Prelude.fromList
           ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
              [Key -> GrpcTimeoutProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"GRPC" (GrpcTimeoutProperty -> (Key, Value))
-> Maybe GrpcTimeoutProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe GrpcTimeoutProperty
gRPC,
               Key -> HttpTimeoutProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"HTTP" (HttpTimeoutProperty -> (Key, Value))
-> Maybe HttpTimeoutProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HttpTimeoutProperty
hTTP,
               Key -> HttpTimeoutProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"HTTP2" (HttpTimeoutProperty -> (Key, Value))
-> Maybe HttpTimeoutProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HttpTimeoutProperty
hTTP2,
               Key -> TcpTimeoutProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"TCP" (TcpTimeoutProperty -> (Key, Value))
-> Maybe TcpTimeoutProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TcpTimeoutProperty
tCP]))
instance Property "GRPC" ListenerTimeoutProperty where
  type PropertyType "GRPC" ListenerTimeoutProperty = GrpcTimeoutProperty
  set :: PropertyType "GRPC" ListenerTimeoutProperty
-> ListenerTimeoutProperty -> ListenerTimeoutProperty
set PropertyType "GRPC" ListenerTimeoutProperty
newValue ListenerTimeoutProperty {Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ListenerTimeoutProperty -> ()
gRPC :: ListenerTimeoutProperty -> Maybe GrpcTimeoutProperty
hTTP :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
hTTP2 :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
tCP :: ListenerTimeoutProperty -> Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
    = ListenerTimeoutProperty {gRPC :: Maybe GrpcTimeoutProperty
gRPC = GrpcTimeoutProperty -> Maybe GrpcTimeoutProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "GRPC" ListenerTimeoutProperty
GrpcTimeoutProperty
newValue, Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ()
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
instance Property "HTTP" ListenerTimeoutProperty where
  type PropertyType "HTTP" ListenerTimeoutProperty = HttpTimeoutProperty
  set :: PropertyType "HTTP" ListenerTimeoutProperty
-> ListenerTimeoutProperty -> ListenerTimeoutProperty
set PropertyType "HTTP" ListenerTimeoutProperty
newValue ListenerTimeoutProperty {Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ListenerTimeoutProperty -> ()
gRPC :: ListenerTimeoutProperty -> Maybe GrpcTimeoutProperty
hTTP :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
hTTP2 :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
tCP :: ListenerTimeoutProperty -> Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
    = ListenerTimeoutProperty {hTTP :: Maybe HttpTimeoutProperty
hTTP = HttpTimeoutProperty -> Maybe HttpTimeoutProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "HTTP" ListenerTimeoutProperty
HttpTimeoutProperty
newValue, Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
instance Property "HTTP2" ListenerTimeoutProperty where
  type PropertyType "HTTP2" ListenerTimeoutProperty = HttpTimeoutProperty
  set :: PropertyType "HTTP2" ListenerTimeoutProperty
-> ListenerTimeoutProperty -> ListenerTimeoutProperty
set PropertyType "HTTP2" ListenerTimeoutProperty
newValue ListenerTimeoutProperty {Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ListenerTimeoutProperty -> ()
gRPC :: ListenerTimeoutProperty -> Maybe GrpcTimeoutProperty
hTTP :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
hTTP2 :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
tCP :: ListenerTimeoutProperty -> Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
    = ListenerTimeoutProperty {hTTP2 :: Maybe HttpTimeoutProperty
hTTP2 = HttpTimeoutProperty -> Maybe HttpTimeoutProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "HTTP2" ListenerTimeoutProperty
HttpTimeoutProperty
newValue, Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
instance Property "TCP" ListenerTimeoutProperty where
  type PropertyType "TCP" ListenerTimeoutProperty = TcpTimeoutProperty
  set :: PropertyType "TCP" ListenerTimeoutProperty
-> ListenerTimeoutProperty -> ListenerTimeoutProperty
set PropertyType "TCP" ListenerTimeoutProperty
newValue ListenerTimeoutProperty {Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
Maybe TcpTimeoutProperty
()
haddock_workaround_ :: ListenerTimeoutProperty -> ()
gRPC :: ListenerTimeoutProperty -> Maybe GrpcTimeoutProperty
hTTP :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
hTTP2 :: ListenerTimeoutProperty -> Maybe HttpTimeoutProperty
tCP :: ListenerTimeoutProperty -> Maybe TcpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
tCP :: Maybe TcpTimeoutProperty
..}
    = ListenerTimeoutProperty {tCP :: Maybe TcpTimeoutProperty
tCP = TcpTimeoutProperty -> Maybe TcpTimeoutProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "TCP" ListenerTimeoutProperty
TcpTimeoutProperty
newValue, Maybe GrpcTimeoutProperty
Maybe HttpTimeoutProperty
()
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
haddock_workaround_ :: ()
gRPC :: Maybe GrpcTimeoutProperty
hTTP :: Maybe HttpTimeoutProperty
hTTP2 :: Maybe HttpTimeoutProperty
..}