module Stratosphere.AppMesh.VirtualNode.ClientTlsCertificateProperty (
        module Exports, ClientTlsCertificateProperty(..),
        mkClientTlsCertificateProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.AppMesh.VirtualNode.ListenerTlsFileCertificateProperty as Exports
import {-# SOURCE #-} Stratosphere.AppMesh.VirtualNode.ListenerTlsSdsCertificateProperty as Exports
import Stratosphere.ResourceProperties
data ClientTlsCertificateProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clienttlscertificate.html>
    ClientTlsCertificateProperty {ClientTlsCertificateProperty -> ()
haddock_workaround_ :: (),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clienttlscertificate.html#cfn-appmesh-virtualnode-clienttlscertificate-file>
                                  ClientTlsCertificateProperty
-> Maybe ListenerTlsFileCertificateProperty
file :: (Prelude.Maybe ListenerTlsFileCertificateProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clienttlscertificate.html#cfn-appmesh-virtualnode-clienttlscertificate-sds>
                                  ClientTlsCertificateProperty
-> Maybe ListenerTlsSdsCertificateProperty
sDS :: (Prelude.Maybe ListenerTlsSdsCertificateProperty)}
  deriving stock (ClientTlsCertificateProperty
-> ClientTlsCertificateProperty -> Bool
(ClientTlsCertificateProperty
 -> ClientTlsCertificateProperty -> Bool)
-> (ClientTlsCertificateProperty
    -> ClientTlsCertificateProperty -> Bool)
-> Eq ClientTlsCertificateProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ClientTlsCertificateProperty
-> ClientTlsCertificateProperty -> Bool
== :: ClientTlsCertificateProperty
-> ClientTlsCertificateProperty -> Bool
$c/= :: ClientTlsCertificateProperty
-> ClientTlsCertificateProperty -> Bool
/= :: ClientTlsCertificateProperty
-> ClientTlsCertificateProperty -> Bool
Prelude.Eq, Int -> ClientTlsCertificateProperty -> ShowS
[ClientTlsCertificateProperty] -> ShowS
ClientTlsCertificateProperty -> String
(Int -> ClientTlsCertificateProperty -> ShowS)
-> (ClientTlsCertificateProperty -> String)
-> ([ClientTlsCertificateProperty] -> ShowS)
-> Show ClientTlsCertificateProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ClientTlsCertificateProperty -> ShowS
showsPrec :: Int -> ClientTlsCertificateProperty -> ShowS
$cshow :: ClientTlsCertificateProperty -> String
show :: ClientTlsCertificateProperty -> String
$cshowList :: [ClientTlsCertificateProperty] -> ShowS
showList :: [ClientTlsCertificateProperty] -> ShowS
Prelude.Show)
mkClientTlsCertificateProperty :: ClientTlsCertificateProperty
mkClientTlsCertificateProperty :: ClientTlsCertificateProperty
mkClientTlsCertificateProperty
  = ClientTlsCertificateProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), file :: Maybe ListenerTlsFileCertificateProperty
file = Maybe ListenerTlsFileCertificateProperty
forall a. Maybe a
Prelude.Nothing,
       sDS :: Maybe ListenerTlsSdsCertificateProperty
sDS = Maybe ListenerTlsSdsCertificateProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties ClientTlsCertificateProperty where
  toResourceProperties :: ClientTlsCertificateProperty -> ResourceProperties
toResourceProperties ClientTlsCertificateProperty {Maybe ListenerTlsFileCertificateProperty
Maybe ListenerTlsSdsCertificateProperty
()
haddock_workaround_ :: ClientTlsCertificateProperty -> ()
file :: ClientTlsCertificateProperty
-> Maybe ListenerTlsFileCertificateProperty
sDS :: ClientTlsCertificateProperty
-> Maybe ListenerTlsSdsCertificateProperty
haddock_workaround_ :: ()
file :: Maybe ListenerTlsFileCertificateProperty
sDS :: Maybe ListenerTlsSdsCertificateProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::AppMesh::VirtualNode.ClientTlsCertificate",
         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 -> ListenerTlsFileCertificateProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"File" (ListenerTlsFileCertificateProperty -> (Key, Value))
-> Maybe ListenerTlsFileCertificateProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ListenerTlsFileCertificateProperty
file,
                            Key -> ListenerTlsSdsCertificateProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"SDS" (ListenerTlsSdsCertificateProperty -> (Key, Value))
-> Maybe ListenerTlsSdsCertificateProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ListenerTlsSdsCertificateProperty
sDS])}
instance JSON.ToJSON ClientTlsCertificateProperty where
  toJSON :: ClientTlsCertificateProperty -> Value
toJSON ClientTlsCertificateProperty {Maybe ListenerTlsFileCertificateProperty
Maybe ListenerTlsSdsCertificateProperty
()
haddock_workaround_ :: ClientTlsCertificateProperty -> ()
file :: ClientTlsCertificateProperty
-> Maybe ListenerTlsFileCertificateProperty
sDS :: ClientTlsCertificateProperty
-> Maybe ListenerTlsSdsCertificateProperty
haddock_workaround_ :: ()
file :: Maybe ListenerTlsFileCertificateProperty
sDS :: Maybe ListenerTlsSdsCertificateProperty
..}
    = [(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 -> ListenerTlsFileCertificateProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"File" (ListenerTlsFileCertificateProperty -> (Key, Value))
-> Maybe ListenerTlsFileCertificateProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ListenerTlsFileCertificateProperty
file,
               Key -> ListenerTlsSdsCertificateProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"SDS" (ListenerTlsSdsCertificateProperty -> (Key, Value))
-> Maybe ListenerTlsSdsCertificateProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ListenerTlsSdsCertificateProperty
sDS]))
instance Property "File" ClientTlsCertificateProperty where
  type PropertyType "File" ClientTlsCertificateProperty = ListenerTlsFileCertificateProperty
  set :: PropertyType "File" ClientTlsCertificateProperty
-> ClientTlsCertificateProperty -> ClientTlsCertificateProperty
set PropertyType "File" ClientTlsCertificateProperty
newValue ClientTlsCertificateProperty {Maybe ListenerTlsFileCertificateProperty
Maybe ListenerTlsSdsCertificateProperty
()
haddock_workaround_ :: ClientTlsCertificateProperty -> ()
file :: ClientTlsCertificateProperty
-> Maybe ListenerTlsFileCertificateProperty
sDS :: ClientTlsCertificateProperty
-> Maybe ListenerTlsSdsCertificateProperty
haddock_workaround_ :: ()
file :: Maybe ListenerTlsFileCertificateProperty
sDS :: Maybe ListenerTlsSdsCertificateProperty
..}
    = ClientTlsCertificateProperty {file :: Maybe ListenerTlsFileCertificateProperty
file = ListenerTlsFileCertificateProperty
-> Maybe ListenerTlsFileCertificateProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "File" ClientTlsCertificateProperty
ListenerTlsFileCertificateProperty
newValue, Maybe ListenerTlsSdsCertificateProperty
()
haddock_workaround_ :: ()
sDS :: Maybe ListenerTlsSdsCertificateProperty
haddock_workaround_ :: ()
sDS :: Maybe ListenerTlsSdsCertificateProperty
..}
instance Property "SDS" ClientTlsCertificateProperty where
  type PropertyType "SDS" ClientTlsCertificateProperty = ListenerTlsSdsCertificateProperty
  set :: PropertyType "SDS" ClientTlsCertificateProperty
-> ClientTlsCertificateProperty -> ClientTlsCertificateProperty
set PropertyType "SDS" ClientTlsCertificateProperty
newValue ClientTlsCertificateProperty {Maybe ListenerTlsFileCertificateProperty
Maybe ListenerTlsSdsCertificateProperty
()
haddock_workaround_ :: ClientTlsCertificateProperty -> ()
file :: ClientTlsCertificateProperty
-> Maybe ListenerTlsFileCertificateProperty
sDS :: ClientTlsCertificateProperty
-> Maybe ListenerTlsSdsCertificateProperty
haddock_workaround_ :: ()
file :: Maybe ListenerTlsFileCertificateProperty
sDS :: Maybe ListenerTlsSdsCertificateProperty
..}
    = ClientTlsCertificateProperty {sDS :: Maybe ListenerTlsSdsCertificateProperty
sDS = ListenerTlsSdsCertificateProperty
-> Maybe ListenerTlsSdsCertificateProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "SDS" ClientTlsCertificateProperty
ListenerTlsSdsCertificateProperty
newValue, Maybe ListenerTlsFileCertificateProperty
()
haddock_workaround_ :: ()
file :: Maybe ListenerTlsFileCertificateProperty
haddock_workaround_ :: ()
file :: Maybe ListenerTlsFileCertificateProperty
..}