packages feed

stratosphere-0.32.0: library-gen/Stratosphere/Resources/LambdaLayerVersion.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversion.html

module Stratosphere.Resources.LambdaLayerVersion where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.LambdaLayerVersionContent

-- | Full data type definition for LambdaLayerVersion. See
-- 'lambdaLayerVersion' for a more convenient constructor.
data LambdaLayerVersion =
  LambdaLayerVersion
  { _lambdaLayerVersionCompatibleRuntimes :: Maybe (ValList Text)
  , _lambdaLayerVersionContent :: LambdaLayerVersionContent
  , _lambdaLayerVersionDescription :: Maybe (Val Text)
  , _lambdaLayerVersionLayerName :: Maybe (Val Text)
  , _lambdaLayerVersionLicenseInfo :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON LambdaLayerVersion where
  toJSON LambdaLayerVersion{..} =
    object $
    catMaybes
    [ fmap (("CompatibleRuntimes",) . toJSON) _lambdaLayerVersionCompatibleRuntimes
    , (Just . ("Content",) . toJSON) _lambdaLayerVersionContent
    , fmap (("Description",) . toJSON) _lambdaLayerVersionDescription
    , fmap (("LayerName",) . toJSON) _lambdaLayerVersionLayerName
    , fmap (("LicenseInfo",) . toJSON) _lambdaLayerVersionLicenseInfo
    ]

-- | Constructor for 'LambdaLayerVersion' containing required fields as
-- arguments.
lambdaLayerVersion
  :: LambdaLayerVersionContent -- ^ 'llvContent'
  -> LambdaLayerVersion
lambdaLayerVersion contentarg =
  LambdaLayerVersion
  { _lambdaLayerVersionCompatibleRuntimes = Nothing
  , _lambdaLayerVersionContent = contentarg
  , _lambdaLayerVersionDescription = Nothing
  , _lambdaLayerVersionLayerName = Nothing
  , _lambdaLayerVersionLicenseInfo = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversion.html#cfn-lambda-layerversion-compatibleruntimes
llvCompatibleRuntimes :: Lens' LambdaLayerVersion (Maybe (ValList Text))
llvCompatibleRuntimes = lens _lambdaLayerVersionCompatibleRuntimes (\s a -> s { _lambdaLayerVersionCompatibleRuntimes = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversion.html#cfn-lambda-layerversion-content
llvContent :: Lens' LambdaLayerVersion LambdaLayerVersionContent
llvContent = lens _lambdaLayerVersionContent (\s a -> s { _lambdaLayerVersionContent = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversion.html#cfn-lambda-layerversion-description
llvDescription :: Lens' LambdaLayerVersion (Maybe (Val Text))
llvDescription = lens _lambdaLayerVersionDescription (\s a -> s { _lambdaLayerVersionDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversion.html#cfn-lambda-layerversion-layername
llvLayerName :: Lens' LambdaLayerVersion (Maybe (Val Text))
llvLayerName = lens _lambdaLayerVersionLayerName (\s a -> s { _lambdaLayerVersionLayerName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversion.html#cfn-lambda-layerversion-licenseinfo
llvLicenseInfo :: Lens' LambdaLayerVersion (Maybe (Val Text))
llvLicenseInfo = lens _lambdaLayerVersionLicenseInfo (\s a -> s { _lambdaLayerVersionLicenseInfo = a })