packages feed

stratosphere-0.59.0: library-gen/Stratosphere/ResourceProperties/CloudFrontCachePolicyCachePolicyConfig.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-cachepolicyconfig.html

module Stratosphere.ResourceProperties.CloudFrontCachePolicyCachePolicyConfig where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin

-- | Full data type definition for CloudFrontCachePolicyCachePolicyConfig. See
-- 'cloudFrontCachePolicyCachePolicyConfig' for a more convenient
-- constructor.
data CloudFrontCachePolicyCachePolicyConfig =
  CloudFrontCachePolicyCachePolicyConfig
  { _cloudFrontCachePolicyCachePolicyConfigComment :: Maybe (Val Text)
  , _cloudFrontCachePolicyCachePolicyConfigDefaultTTL :: Maybe (Val Double)
  , _cloudFrontCachePolicyCachePolicyConfigMaxTTL :: Maybe (Val Double)
  , _cloudFrontCachePolicyCachePolicyConfigMinTTL :: Val Double
  , _cloudFrontCachePolicyCachePolicyConfigName :: Val Text
  , _cloudFrontCachePolicyCachePolicyConfigParametersInCacheKeyAndForwardedToOrigin :: Maybe CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin
  } deriving (Show, Eq)

instance ToJSON CloudFrontCachePolicyCachePolicyConfig where
  toJSON CloudFrontCachePolicyCachePolicyConfig{..} =
    object $
    catMaybes
    [ fmap (("Comment",) . toJSON) _cloudFrontCachePolicyCachePolicyConfigComment
    , fmap (("DefaultTTL",) . toJSON) _cloudFrontCachePolicyCachePolicyConfigDefaultTTL
    , fmap (("MaxTTL",) . toJSON) _cloudFrontCachePolicyCachePolicyConfigMaxTTL
    , (Just . ("MinTTL",) . toJSON) _cloudFrontCachePolicyCachePolicyConfigMinTTL
    , (Just . ("Name",) . toJSON) _cloudFrontCachePolicyCachePolicyConfigName
    , fmap (("ParametersInCacheKeyAndForwardedToOrigin",) . toJSON) _cloudFrontCachePolicyCachePolicyConfigParametersInCacheKeyAndForwardedToOrigin
    ]

-- | Constructor for 'CloudFrontCachePolicyCachePolicyConfig' containing
-- required fields as arguments.
cloudFrontCachePolicyCachePolicyConfig
  :: Val Double -- ^ 'cfcpcpcMinTTL'
  -> Val Text -- ^ 'cfcpcpcName'
  -> CloudFrontCachePolicyCachePolicyConfig
cloudFrontCachePolicyCachePolicyConfig minTTLarg namearg =
  CloudFrontCachePolicyCachePolicyConfig
  { _cloudFrontCachePolicyCachePolicyConfigComment = Nothing
  , _cloudFrontCachePolicyCachePolicyConfigDefaultTTL = Nothing
  , _cloudFrontCachePolicyCachePolicyConfigMaxTTL = Nothing
  , _cloudFrontCachePolicyCachePolicyConfigMinTTL = minTTLarg
  , _cloudFrontCachePolicyCachePolicyConfigName = namearg
  , _cloudFrontCachePolicyCachePolicyConfigParametersInCacheKeyAndForwardedToOrigin = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-cachepolicyconfig.html#cfn-cloudfront-cachepolicy-cachepolicyconfig-comment
cfcpcpcComment :: Lens' CloudFrontCachePolicyCachePolicyConfig (Maybe (Val Text))
cfcpcpcComment = lens _cloudFrontCachePolicyCachePolicyConfigComment (\s a -> s { _cloudFrontCachePolicyCachePolicyConfigComment = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-cachepolicyconfig.html#cfn-cloudfront-cachepolicy-cachepolicyconfig-defaultttl
cfcpcpcDefaultTTL :: Lens' CloudFrontCachePolicyCachePolicyConfig (Maybe (Val Double))
cfcpcpcDefaultTTL = lens _cloudFrontCachePolicyCachePolicyConfigDefaultTTL (\s a -> s { _cloudFrontCachePolicyCachePolicyConfigDefaultTTL = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-cachepolicyconfig.html#cfn-cloudfront-cachepolicy-cachepolicyconfig-maxttl
cfcpcpcMaxTTL :: Lens' CloudFrontCachePolicyCachePolicyConfig (Maybe (Val Double))
cfcpcpcMaxTTL = lens _cloudFrontCachePolicyCachePolicyConfigMaxTTL (\s a -> s { _cloudFrontCachePolicyCachePolicyConfigMaxTTL = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-cachepolicyconfig.html#cfn-cloudfront-cachepolicy-cachepolicyconfig-minttl
cfcpcpcMinTTL :: Lens' CloudFrontCachePolicyCachePolicyConfig (Val Double)
cfcpcpcMinTTL = lens _cloudFrontCachePolicyCachePolicyConfigMinTTL (\s a -> s { _cloudFrontCachePolicyCachePolicyConfigMinTTL = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-cachepolicyconfig.html#cfn-cloudfront-cachepolicy-cachepolicyconfig-name
cfcpcpcName :: Lens' CloudFrontCachePolicyCachePolicyConfig (Val Text)
cfcpcpcName = lens _cloudFrontCachePolicyCachePolicyConfigName (\s a -> s { _cloudFrontCachePolicyCachePolicyConfigName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-cachepolicyconfig.html#cfn-cloudfront-cachepolicy-cachepolicyconfig-parametersincachekeyandforwardedtoorigin
cfcpcpcParametersInCacheKeyAndForwardedToOrigin :: Lens' CloudFrontCachePolicyCachePolicyConfig (Maybe CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin)
cfcpcpcParametersInCacheKeyAndForwardedToOrigin = lens _cloudFrontCachePolicyCachePolicyConfigParametersInCacheKeyAndForwardedToOrigin (\s a -> s { _cloudFrontCachePolicyCachePolicyConfigParametersInCacheKeyAndForwardedToOrigin = a })