packages feed

stratosphere-0.41.0: library-gen/Stratosphere/Resources/TransferUser.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html

module Stratosphere.Resources.TransferUser where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for TransferUser. See 'transferUser' for a more
-- convenient constructor.
data TransferUser =
  TransferUser
  { _transferUserHomeDirectory :: Maybe (Val Text)
  , _transferUserPolicy :: Maybe (Val Text)
  , _transferUserRole :: Val Text
  , _transferUserServerId :: Val Text
  , _transferUserSshPublicKeys :: Maybe (ValList Text)
  , _transferUserTags :: Maybe [Tag]
  , _transferUserUserName :: Val Text
  } deriving (Show, Eq)

instance ToResourceProperties TransferUser where
  toResourceProperties TransferUser{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::Transfer::User"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("HomeDirectory",) . toJSON) _transferUserHomeDirectory
        , fmap (("Policy",) . toJSON) _transferUserPolicy
        , (Just . ("Role",) . toJSON) _transferUserRole
        , (Just . ("ServerId",) . toJSON) _transferUserServerId
        , fmap (("SshPublicKeys",) . toJSON) _transferUserSshPublicKeys
        , fmap (("Tags",) . toJSON) _transferUserTags
        , (Just . ("UserName",) . toJSON) _transferUserUserName
        ]
    }

-- | Constructor for 'TransferUser' containing required fields as arguments.
transferUser
  :: Val Text -- ^ 'tuRole'
  -> Val Text -- ^ 'tuServerId'
  -> Val Text -- ^ 'tuUserName'
  -> TransferUser
transferUser rolearg serverIdarg userNamearg =
  TransferUser
  { _transferUserHomeDirectory = Nothing
  , _transferUserPolicy = Nothing
  , _transferUserRole = rolearg
  , _transferUserServerId = serverIdarg
  , _transferUserSshPublicKeys = Nothing
  , _transferUserTags = Nothing
  , _transferUserUserName = userNamearg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-homedirectory
tuHomeDirectory :: Lens' TransferUser (Maybe (Val Text))
tuHomeDirectory = lens _transferUserHomeDirectory (\s a -> s { _transferUserHomeDirectory = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-policy
tuPolicy :: Lens' TransferUser (Maybe (Val Text))
tuPolicy = lens _transferUserPolicy (\s a -> s { _transferUserPolicy = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-role
tuRole :: Lens' TransferUser (Val Text)
tuRole = lens _transferUserRole (\s a -> s { _transferUserRole = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-serverid
tuServerId :: Lens' TransferUser (Val Text)
tuServerId = lens _transferUserServerId (\s a -> s { _transferUserServerId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-sshpublickeys
tuSshPublicKeys :: Lens' TransferUser (Maybe (ValList Text))
tuSshPublicKeys = lens _transferUserSshPublicKeys (\s a -> s { _transferUserSshPublicKeys = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-tags
tuTags :: Lens' TransferUser (Maybe [Tag])
tuTags = lens _transferUserTags (\s a -> s { _transferUserTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-username
tuUserName :: Lens' TransferUser (Val Text)
tuUserName = lens _transferUserUserName (\s a -> s { _transferUserUserName = a })