packages feed

stratosphere-0.60.0: library-gen/Stratosphere/Resources/GlobalAcceleratorAccelerator.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-accelerator.html

module Stratosphere.Resources.GlobalAcceleratorAccelerator where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for GlobalAcceleratorAccelerator. See
-- 'globalAcceleratorAccelerator' for a more convenient constructor.
data GlobalAcceleratorAccelerator =
  GlobalAcceleratorAccelerator
  { _globalAcceleratorAcceleratorEnabled :: Maybe (Val Bool)
  , _globalAcceleratorAcceleratorIpAddressType :: Maybe (Val Text)
  , _globalAcceleratorAcceleratorIpAddresses :: Maybe (ValList Text)
  , _globalAcceleratorAcceleratorName :: Val Text
  , _globalAcceleratorAcceleratorTags :: Maybe [Tag]
  } deriving (Show, Eq)

instance ToResourceProperties GlobalAcceleratorAccelerator where
  toResourceProperties GlobalAcceleratorAccelerator{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::GlobalAccelerator::Accelerator"
    , resourcePropertiesProperties =
        keyMapFromList $ catMaybes
        [ fmap (("Enabled",) . toJSON) _globalAcceleratorAcceleratorEnabled
        , fmap (("IpAddressType",) . toJSON) _globalAcceleratorAcceleratorIpAddressType
        , fmap (("IpAddresses",) . toJSON) _globalAcceleratorAcceleratorIpAddresses
        , (Just . ("Name",) . toJSON) _globalAcceleratorAcceleratorName
        , fmap (("Tags",) . toJSON) _globalAcceleratorAcceleratorTags
        ]
    }

-- | Constructor for 'GlobalAcceleratorAccelerator' containing required fields
-- as arguments.
globalAcceleratorAccelerator
  :: Val Text -- ^ 'gaaName'
  -> GlobalAcceleratorAccelerator
globalAcceleratorAccelerator namearg =
  GlobalAcceleratorAccelerator
  { _globalAcceleratorAcceleratorEnabled = Nothing
  , _globalAcceleratorAcceleratorIpAddressType = Nothing
  , _globalAcceleratorAcceleratorIpAddresses = Nothing
  , _globalAcceleratorAcceleratorName = namearg
  , _globalAcceleratorAcceleratorTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-accelerator.html#cfn-globalaccelerator-accelerator-enabled
gaaEnabled :: Lens' GlobalAcceleratorAccelerator (Maybe (Val Bool))
gaaEnabled = lens _globalAcceleratorAcceleratorEnabled (\s a -> s { _globalAcceleratorAcceleratorEnabled = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-accelerator.html#cfn-globalaccelerator-accelerator-ipaddresstype
gaaIpAddressType :: Lens' GlobalAcceleratorAccelerator (Maybe (Val Text))
gaaIpAddressType = lens _globalAcceleratorAcceleratorIpAddressType (\s a -> s { _globalAcceleratorAcceleratorIpAddressType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-accelerator.html#cfn-globalaccelerator-accelerator-ipaddresses
gaaIpAddresses :: Lens' GlobalAcceleratorAccelerator (Maybe (ValList Text))
gaaIpAddresses = lens _globalAcceleratorAcceleratorIpAddresses (\s a -> s { _globalAcceleratorAcceleratorIpAddresses = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-accelerator.html#cfn-globalaccelerator-accelerator-name
gaaName :: Lens' GlobalAcceleratorAccelerator (Val Text)
gaaName = lens _globalAcceleratorAcceleratorName (\s a -> s { _globalAcceleratorAcceleratorName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-accelerator.html#cfn-globalaccelerator-accelerator-tags
gaaTags :: Lens' GlobalAcceleratorAccelerator (Maybe [Tag])
gaaTags = lens _globalAcceleratorAcceleratorTags (\s a -> s { _globalAcceleratorAcceleratorTags = a })