module Stratosphere.IoTSiteWise.AccessPolicy.AccessPolicyResourceProperty (
        module Exports, AccessPolicyResourceProperty(..),
        mkAccessPolicyResourceProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.IoTSiteWise.AccessPolicy.PortalProperty as Exports
import {-# SOURCE #-} Stratosphere.IoTSiteWise.AccessPolicy.ProjectProperty as Exports
import Stratosphere.ResourceProperties
data AccessPolicyResourceProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotsitewise-accesspolicy-accesspolicyresource.html>
    AccessPolicyResourceProperty {AccessPolicyResourceProperty -> ()
haddock_workaround_ :: (),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotsitewise-accesspolicy-accesspolicyresource.html#cfn-iotsitewise-accesspolicy-accesspolicyresource-portal>
                                  AccessPolicyResourceProperty -> Maybe PortalProperty
portal :: (Prelude.Maybe PortalProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotsitewise-accesspolicy-accesspolicyresource.html#cfn-iotsitewise-accesspolicy-accesspolicyresource-project>
                                  AccessPolicyResourceProperty -> Maybe ProjectProperty
project :: (Prelude.Maybe ProjectProperty)}
  deriving stock (AccessPolicyResourceProperty
-> AccessPolicyResourceProperty -> Bool
(AccessPolicyResourceProperty
 -> AccessPolicyResourceProperty -> Bool)
-> (AccessPolicyResourceProperty
    -> AccessPolicyResourceProperty -> Bool)
-> Eq AccessPolicyResourceProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AccessPolicyResourceProperty
-> AccessPolicyResourceProperty -> Bool
== :: AccessPolicyResourceProperty
-> AccessPolicyResourceProperty -> Bool
$c/= :: AccessPolicyResourceProperty
-> AccessPolicyResourceProperty -> Bool
/= :: AccessPolicyResourceProperty
-> AccessPolicyResourceProperty -> Bool
Prelude.Eq, Int -> AccessPolicyResourceProperty -> ShowS
[AccessPolicyResourceProperty] -> ShowS
AccessPolicyResourceProperty -> String
(Int -> AccessPolicyResourceProperty -> ShowS)
-> (AccessPolicyResourceProperty -> String)
-> ([AccessPolicyResourceProperty] -> ShowS)
-> Show AccessPolicyResourceProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AccessPolicyResourceProperty -> ShowS
showsPrec :: Int -> AccessPolicyResourceProperty -> ShowS
$cshow :: AccessPolicyResourceProperty -> String
show :: AccessPolicyResourceProperty -> String
$cshowList :: [AccessPolicyResourceProperty] -> ShowS
showList :: [AccessPolicyResourceProperty] -> ShowS
Prelude.Show)
mkAccessPolicyResourceProperty :: AccessPolicyResourceProperty
mkAccessPolicyResourceProperty :: AccessPolicyResourceProperty
mkAccessPolicyResourceProperty
  = AccessPolicyResourceProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), portal :: Maybe PortalProperty
portal = Maybe PortalProperty
forall a. Maybe a
Prelude.Nothing,
       project :: Maybe ProjectProperty
project = Maybe ProjectProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties AccessPolicyResourceProperty where
  toResourceProperties :: AccessPolicyResourceProperty -> ResourceProperties
toResourceProperties AccessPolicyResourceProperty {Maybe PortalProperty
Maybe ProjectProperty
()
haddock_workaround_ :: AccessPolicyResourceProperty -> ()
portal :: AccessPolicyResourceProperty -> Maybe PortalProperty
project :: AccessPolicyResourceProperty -> Maybe ProjectProperty
haddock_workaround_ :: ()
portal :: Maybe PortalProperty
project :: Maybe ProjectProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::IoTSiteWise::AccessPolicy.AccessPolicyResource",
         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 -> PortalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Portal" (PortalProperty -> (Key, Value))
-> Maybe PortalProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PortalProperty
portal,
                            Key -> ProjectProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Project" (ProjectProperty -> (Key, Value))
-> Maybe ProjectProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProjectProperty
project])}
instance JSON.ToJSON AccessPolicyResourceProperty where
  toJSON :: AccessPolicyResourceProperty -> Value
toJSON AccessPolicyResourceProperty {Maybe PortalProperty
Maybe ProjectProperty
()
haddock_workaround_ :: AccessPolicyResourceProperty -> ()
portal :: AccessPolicyResourceProperty -> Maybe PortalProperty
project :: AccessPolicyResourceProperty -> Maybe ProjectProperty
haddock_workaround_ :: ()
portal :: Maybe PortalProperty
project :: Maybe ProjectProperty
..}
    = [(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 -> PortalProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Portal" (PortalProperty -> (Key, Value))
-> Maybe PortalProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PortalProperty
portal,
               Key -> ProjectProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Project" (ProjectProperty -> (Key, Value))
-> Maybe ProjectProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProjectProperty
project]))
instance Property "Portal" AccessPolicyResourceProperty where
  type PropertyType "Portal" AccessPolicyResourceProperty = PortalProperty
  set :: PropertyType "Portal" AccessPolicyResourceProperty
-> AccessPolicyResourceProperty -> AccessPolicyResourceProperty
set PropertyType "Portal" AccessPolicyResourceProperty
newValue AccessPolicyResourceProperty {Maybe PortalProperty
Maybe ProjectProperty
()
haddock_workaround_ :: AccessPolicyResourceProperty -> ()
portal :: AccessPolicyResourceProperty -> Maybe PortalProperty
project :: AccessPolicyResourceProperty -> Maybe ProjectProperty
haddock_workaround_ :: ()
portal :: Maybe PortalProperty
project :: Maybe ProjectProperty
..}
    = AccessPolicyResourceProperty {portal :: Maybe PortalProperty
portal = PortalProperty -> Maybe PortalProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "Portal" AccessPolicyResourceProperty
PortalProperty
newValue, Maybe ProjectProperty
()
haddock_workaround_ :: ()
project :: Maybe ProjectProperty
haddock_workaround_ :: ()
project :: Maybe ProjectProperty
..}
instance Property "Project" AccessPolicyResourceProperty where
  type PropertyType "Project" AccessPolicyResourceProperty = ProjectProperty
  set :: PropertyType "Project" AccessPolicyResourceProperty
-> AccessPolicyResourceProperty -> AccessPolicyResourceProperty
set PropertyType "Project" AccessPolicyResourceProperty
newValue AccessPolicyResourceProperty {Maybe PortalProperty
Maybe ProjectProperty
()
haddock_workaround_ :: AccessPolicyResourceProperty -> ()
portal :: AccessPolicyResourceProperty -> Maybe PortalProperty
project :: AccessPolicyResourceProperty -> Maybe ProjectProperty
haddock_workaround_ :: ()
portal :: Maybe PortalProperty
project :: Maybe ProjectProperty
..}
    = AccessPolicyResourceProperty
        {project :: Maybe ProjectProperty
project = ProjectProperty -> Maybe ProjectProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "Project" AccessPolicyResourceProperty
ProjectProperty
newValue, Maybe PortalProperty
()
haddock_workaround_ :: ()
portal :: Maybe PortalProperty
haddock_workaround_ :: ()
portal :: Maybe PortalProperty
..}