packages feed

stratosphere-0.50.0: library-gen/Stratosphere/ResourceProperties/WAFv2WebACLVisibilityConfig.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html

module Stratosphere.ResourceProperties.WAFv2WebACLVisibilityConfig where

import Stratosphere.ResourceImports


-- | Full data type definition for WAFv2WebACLVisibilityConfig. See
-- 'waFv2WebACLVisibilityConfig' for a more convenient constructor.
data WAFv2WebACLVisibilityConfig =
  WAFv2WebACLVisibilityConfig
  { _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled :: Val Bool
  , _wAFv2WebACLVisibilityConfigMetricName :: Val Text
  , _wAFv2WebACLVisibilityConfigSampledRequestsEnabled :: Val Bool
  } deriving (Show, Eq)

instance ToJSON WAFv2WebACLVisibilityConfig where
  toJSON WAFv2WebACLVisibilityConfig{..} =
    object $
    catMaybes
    [ (Just . ("CloudWatchMetricsEnabled",) . toJSON) _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled
    , (Just . ("MetricName",) . toJSON) _wAFv2WebACLVisibilityConfigMetricName
    , (Just . ("SampledRequestsEnabled",) . toJSON) _wAFv2WebACLVisibilityConfigSampledRequestsEnabled
    ]

-- | Constructor for 'WAFv2WebACLVisibilityConfig' containing required fields
-- as arguments.
waFv2WebACLVisibilityConfig
  :: Val Bool -- ^ 'wafwaclvcCloudWatchMetricsEnabled'
  -> Val Text -- ^ 'wafwaclvcMetricName'
  -> Val Bool -- ^ 'wafwaclvcSampledRequestsEnabled'
  -> WAFv2WebACLVisibilityConfig
waFv2WebACLVisibilityConfig cloudWatchMetricsEnabledarg metricNamearg sampledRequestsEnabledarg =
  WAFv2WebACLVisibilityConfig
  { _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled = cloudWatchMetricsEnabledarg
  , _wAFv2WebACLVisibilityConfigMetricName = metricNamearg
  , _wAFv2WebACLVisibilityConfigSampledRequestsEnabled = sampledRequestsEnabledarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-cloudwatchmetricsenabled
wafwaclvcCloudWatchMetricsEnabled :: Lens' WAFv2WebACLVisibilityConfig (Val Bool)
wafwaclvcCloudWatchMetricsEnabled = lens _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled (\s a -> s { _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-metricname
wafwaclvcMetricName :: Lens' WAFv2WebACLVisibilityConfig (Val Text)
wafwaclvcMetricName = lens _wAFv2WebACLVisibilityConfigMetricName (\s a -> s { _wAFv2WebACLVisibilityConfigMetricName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-sampledrequestsenabled
wafwaclvcSampledRequestsEnabled :: Lens' WAFv2WebACLVisibilityConfig (Val Bool)
wafwaclvcSampledRequestsEnabled = lens _wAFv2WebACLVisibilityConfigSampledRequestsEnabled (\s a -> s { _wAFv2WebACLVisibilityConfigSampledRequestsEnabled = a })