packages feed

stratosphere-0.42.0: library-gen/Stratosphere/ResourceProperties/ManagedBlockchainMemberNetworkConfiguration.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-managedblockchain-member-networkconfiguration.html

module Stratosphere.ResourceProperties.ManagedBlockchainMemberNetworkConfiguration where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ManagedBlockchainMemberNetworkFrameworkConfiguration
import Stratosphere.ResourceProperties.ManagedBlockchainMemberVotingPolicy

-- | Full data type definition for
-- ManagedBlockchainMemberNetworkConfiguration. See
-- 'managedBlockchainMemberNetworkConfiguration' for a more convenient
-- constructor.
data ManagedBlockchainMemberNetworkConfiguration =
  ManagedBlockchainMemberNetworkConfiguration
  { _managedBlockchainMemberNetworkConfigurationDescription :: Maybe (Val Text)
  , _managedBlockchainMemberNetworkConfigurationFramework :: Val Text
  , _managedBlockchainMemberNetworkConfigurationFrameworkVersion :: Val Text
  , _managedBlockchainMemberNetworkConfigurationName :: Val Text
  , _managedBlockchainMemberNetworkConfigurationNetworkFrameworkConfiguration :: Maybe ManagedBlockchainMemberNetworkFrameworkConfiguration
  , _managedBlockchainMemberNetworkConfigurationVotingPolicy :: ManagedBlockchainMemberVotingPolicy
  } deriving (Show, Eq)

instance ToJSON ManagedBlockchainMemberNetworkConfiguration where
  toJSON ManagedBlockchainMemberNetworkConfiguration{..} =
    object $
    catMaybes
    [ fmap (("Description",) . toJSON) _managedBlockchainMemberNetworkConfigurationDescription
    , (Just . ("Framework",) . toJSON) _managedBlockchainMemberNetworkConfigurationFramework
    , (Just . ("FrameworkVersion",) . toJSON) _managedBlockchainMemberNetworkConfigurationFrameworkVersion
    , (Just . ("Name",) . toJSON) _managedBlockchainMemberNetworkConfigurationName
    , fmap (("NetworkFrameworkConfiguration",) . toJSON) _managedBlockchainMemberNetworkConfigurationNetworkFrameworkConfiguration
    , (Just . ("VotingPolicy",) . toJSON) _managedBlockchainMemberNetworkConfigurationVotingPolicy
    ]

-- | Constructor for 'ManagedBlockchainMemberNetworkConfiguration' containing
-- required fields as arguments.
managedBlockchainMemberNetworkConfiguration
  :: Val Text -- ^ 'mbmncFramework'
  -> Val Text -- ^ 'mbmncFrameworkVersion'
  -> Val Text -- ^ 'mbmncName'
  -> ManagedBlockchainMemberVotingPolicy -- ^ 'mbmncVotingPolicy'
  -> ManagedBlockchainMemberNetworkConfiguration
managedBlockchainMemberNetworkConfiguration frameworkarg frameworkVersionarg namearg votingPolicyarg =
  ManagedBlockchainMemberNetworkConfiguration
  { _managedBlockchainMemberNetworkConfigurationDescription = Nothing
  , _managedBlockchainMemberNetworkConfigurationFramework = frameworkarg
  , _managedBlockchainMemberNetworkConfigurationFrameworkVersion = frameworkVersionarg
  , _managedBlockchainMemberNetworkConfigurationName = namearg
  , _managedBlockchainMemberNetworkConfigurationNetworkFrameworkConfiguration = Nothing
  , _managedBlockchainMemberNetworkConfigurationVotingPolicy = votingPolicyarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-managedblockchain-member-networkconfiguration.html#cfn-managedblockchain-member-networkconfiguration-description
mbmncDescription :: Lens' ManagedBlockchainMemberNetworkConfiguration (Maybe (Val Text))
mbmncDescription = lens _managedBlockchainMemberNetworkConfigurationDescription (\s a -> s { _managedBlockchainMemberNetworkConfigurationDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-managedblockchain-member-networkconfiguration.html#cfn-managedblockchain-member-networkconfiguration-framework
mbmncFramework :: Lens' ManagedBlockchainMemberNetworkConfiguration (Val Text)
mbmncFramework = lens _managedBlockchainMemberNetworkConfigurationFramework (\s a -> s { _managedBlockchainMemberNetworkConfigurationFramework = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-managedblockchain-member-networkconfiguration.html#cfn-managedblockchain-member-networkconfiguration-frameworkversion
mbmncFrameworkVersion :: Lens' ManagedBlockchainMemberNetworkConfiguration (Val Text)
mbmncFrameworkVersion = lens _managedBlockchainMemberNetworkConfigurationFrameworkVersion (\s a -> s { _managedBlockchainMemberNetworkConfigurationFrameworkVersion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-managedblockchain-member-networkconfiguration.html#cfn-managedblockchain-member-networkconfiguration-name
mbmncName :: Lens' ManagedBlockchainMemberNetworkConfiguration (Val Text)
mbmncName = lens _managedBlockchainMemberNetworkConfigurationName (\s a -> s { _managedBlockchainMemberNetworkConfigurationName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-managedblockchain-member-networkconfiguration.html#cfn-managedblockchain-member-networkconfiguration-networkframeworkconfiguration
mbmncNetworkFrameworkConfiguration :: Lens' ManagedBlockchainMemberNetworkConfiguration (Maybe ManagedBlockchainMemberNetworkFrameworkConfiguration)
mbmncNetworkFrameworkConfiguration = lens _managedBlockchainMemberNetworkConfigurationNetworkFrameworkConfiguration (\s a -> s { _managedBlockchainMemberNetworkConfigurationNetworkFrameworkConfiguration = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-managedblockchain-member-networkconfiguration.html#cfn-managedblockchain-member-networkconfiguration-votingpolicy
mbmncVotingPolicy :: Lens' ManagedBlockchainMemberNetworkConfiguration ManagedBlockchainMemberVotingPolicy
mbmncVotingPolicy = lens _managedBlockchainMemberNetworkConfigurationVotingPolicy (\s a -> s { _managedBlockchainMemberNetworkConfigurationVotingPolicy = a })