packages feed

stratosphere-0.24.2: library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html

module Stratosphere.Resources.AmazonMQConfiguration where

import Stratosphere.ResourceImports


-- | Full data type definition for AmazonMQConfiguration. See
-- 'amazonMQConfiguration' for a more convenient constructor.
data AmazonMQConfiguration =
  AmazonMQConfiguration
  { _amazonMQConfigurationData :: Val Text
  , _amazonMQConfigurationDescription :: Maybe (Val Text)
  , _amazonMQConfigurationEngineType :: Val Text
  , _amazonMQConfigurationEngineVersion :: Val Text
  , _amazonMQConfigurationName :: Val Text
  } deriving (Show, Eq)

instance ToJSON AmazonMQConfiguration where
  toJSON AmazonMQConfiguration{..} =
    object $
    catMaybes
    [ (Just . ("Data",) . toJSON) _amazonMQConfigurationData
    , fmap (("Description",) . toJSON) _amazonMQConfigurationDescription
    , (Just . ("EngineType",) . toJSON) _amazonMQConfigurationEngineType
    , (Just . ("EngineVersion",) . toJSON) _amazonMQConfigurationEngineVersion
    , (Just . ("Name",) . toJSON) _amazonMQConfigurationName
    ]

instance FromJSON AmazonMQConfiguration where
  parseJSON (Object obj) =
    AmazonMQConfiguration <$>
      (obj .: "Data") <*>
      (obj .:? "Description") <*>
      (obj .: "EngineType") <*>
      (obj .: "EngineVersion") <*>
      (obj .: "Name")
  parseJSON _ = mempty

-- | Constructor for 'AmazonMQConfiguration' containing required fields as
-- arguments.
amazonMQConfiguration
  :: Val Text -- ^ 'amqcData'
  -> Val Text -- ^ 'amqcEngineType'
  -> Val Text -- ^ 'amqcEngineVersion'
  -> Val Text -- ^ 'amqcName'
  -> AmazonMQConfiguration
amazonMQConfiguration dataarg engineTypearg engineVersionarg namearg =
  AmazonMQConfiguration
  { _amazonMQConfigurationData = dataarg
  , _amazonMQConfigurationDescription = Nothing
  , _amazonMQConfigurationEngineType = engineTypearg
  , _amazonMQConfigurationEngineVersion = engineVersionarg
  , _amazonMQConfigurationName = namearg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-data
amqcData :: Lens' AmazonMQConfiguration (Val Text)
amqcData = lens _amazonMQConfigurationData (\s a -> s { _amazonMQConfigurationData = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-description
amqcDescription :: Lens' AmazonMQConfiguration (Maybe (Val Text))
amqcDescription = lens _amazonMQConfigurationDescription (\s a -> s { _amazonMQConfigurationDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-enginetype
amqcEngineType :: Lens' AmazonMQConfiguration (Val Text)
amqcEngineType = lens _amazonMQConfigurationEngineType (\s a -> s { _amazonMQConfigurationEngineType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-engineversion
amqcEngineVersion :: Lens' AmazonMQConfiguration (Val Text)
amqcEngineVersion = lens _amazonMQConfigurationEngineVersion (\s a -> s { _amazonMQConfigurationEngineVersion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-name
amqcName :: Lens' AmazonMQConfiguration (Val Text)
amqcName = lens _amazonMQConfigurationName (\s a -> s { _amazonMQConfigurationName = a })