packages feed

stratosphere-0.24.2: library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerUser.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html

module Stratosphere.ResourceProperties.AmazonMQBrokerUser where

import Stratosphere.ResourceImports


-- | Full data type definition for AmazonMQBrokerUser. See
-- 'amazonMQBrokerUser' for a more convenient constructor.
data AmazonMQBrokerUser =
  AmazonMQBrokerUser
  { _amazonMQBrokerUserConsoleAccess :: Maybe (Val Bool)
  , _amazonMQBrokerUserGroups :: Maybe (ValList Text)
  , _amazonMQBrokerUserPassword :: Val Text
  , _amazonMQBrokerUserUsername :: Val Text
  } deriving (Show, Eq)

instance ToJSON AmazonMQBrokerUser where
  toJSON AmazonMQBrokerUser{..} =
    object $
    catMaybes
    [ fmap (("ConsoleAccess",) . toJSON . fmap Bool') _amazonMQBrokerUserConsoleAccess
    , fmap (("Groups",) . toJSON) _amazonMQBrokerUserGroups
    , (Just . ("Password",) . toJSON) _amazonMQBrokerUserPassword
    , (Just . ("Username",) . toJSON) _amazonMQBrokerUserUsername
    ]

instance FromJSON AmazonMQBrokerUser where
  parseJSON (Object obj) =
    AmazonMQBrokerUser <$>
      fmap (fmap (fmap unBool')) (obj .:? "ConsoleAccess") <*>
      (obj .:? "Groups") <*>
      (obj .: "Password") <*>
      (obj .: "Username")
  parseJSON _ = mempty

-- | Constructor for 'AmazonMQBrokerUser' containing required fields as
-- arguments.
amazonMQBrokerUser
  :: Val Text -- ^ 'amqbuPassword'
  -> Val Text -- ^ 'amqbuUsername'
  -> AmazonMQBrokerUser
amazonMQBrokerUser passwordarg usernamearg =
  AmazonMQBrokerUser
  { _amazonMQBrokerUserConsoleAccess = Nothing
  , _amazonMQBrokerUserGroups = Nothing
  , _amazonMQBrokerUserPassword = passwordarg
  , _amazonMQBrokerUserUsername = usernamearg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-consoleaccess
amqbuConsoleAccess :: Lens' AmazonMQBrokerUser (Maybe (Val Bool))
amqbuConsoleAccess = lens _amazonMQBrokerUserConsoleAccess (\s a -> s { _amazonMQBrokerUserConsoleAccess = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-groups
amqbuGroups :: Lens' AmazonMQBrokerUser (Maybe (ValList Text))
amqbuGroups = lens _amazonMQBrokerUserGroups (\s a -> s { _amazonMQBrokerUserGroups = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-password
amqbuPassword :: Lens' AmazonMQBrokerUser (Val Text)
amqbuPassword = lens _amazonMQBrokerUserPassword (\s a -> s { _amazonMQBrokerUserPassword = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-username
amqbuUsername :: Lens' AmazonMQBrokerUser (Val Text)
amqbuUsername = lens _amazonMQBrokerUserUsername (\s a -> s { _amazonMQBrokerUserUsername = a })