packages feed

stratosphere-0.4.2: library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html

module Stratosphere.ResourceProperties.WAFSizeConstraintSetSizeConstraint where

import Control.Lens hiding ((.=))
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Monoid (mempty)
import Data.Text

import Stratosphere.Values
import Stratosphere.ResourceProperties.WAFSizeConstraintSetFieldToMatch

-- | Full data type definition for WAFSizeConstraintSetSizeConstraint. See
-- 'wafSizeConstraintSetSizeConstraint' for a more convenient constructor.
data WAFSizeConstraintSetSizeConstraint =
  WAFSizeConstraintSetSizeConstraint
  { _wAFSizeConstraintSetSizeConstraintComparisonOperator :: Val Text
  , _wAFSizeConstraintSetSizeConstraintFieldToMatch :: WAFSizeConstraintSetFieldToMatch
  , _wAFSizeConstraintSetSizeConstraintSize :: Val Integer'
  , _wAFSizeConstraintSetSizeConstraintTextTransformation :: Val Text
  } deriving (Show, Eq)

instance ToJSON WAFSizeConstraintSetSizeConstraint where
  toJSON WAFSizeConstraintSetSizeConstraint{..} =
    object $
    catMaybes
    [ Just ("ComparisonOperator" .= _wAFSizeConstraintSetSizeConstraintComparisonOperator)
    , Just ("FieldToMatch" .= _wAFSizeConstraintSetSizeConstraintFieldToMatch)
    , Just ("Size" .= _wAFSizeConstraintSetSizeConstraintSize)
    , Just ("TextTransformation" .= _wAFSizeConstraintSetSizeConstraintTextTransformation)
    ]

instance FromJSON WAFSizeConstraintSetSizeConstraint where
  parseJSON (Object obj) =
    WAFSizeConstraintSetSizeConstraint <$>
      obj .: "ComparisonOperator" <*>
      obj .: "FieldToMatch" <*>
      obj .: "Size" <*>
      obj .: "TextTransformation"
  parseJSON _ = mempty

-- | Constructor for 'WAFSizeConstraintSetSizeConstraint' containing required
-- fields as arguments.
wafSizeConstraintSetSizeConstraint
  :: Val Text -- ^ 'wafscsscComparisonOperator'
  -> WAFSizeConstraintSetFieldToMatch -- ^ 'wafscsscFieldToMatch'
  -> Val Integer' -- ^ 'wafscsscSize'
  -> Val Text -- ^ 'wafscsscTextTransformation'
  -> WAFSizeConstraintSetSizeConstraint
wafSizeConstraintSetSizeConstraint comparisonOperatorarg fieldToMatcharg sizearg textTransformationarg =
  WAFSizeConstraintSetSizeConstraint
  { _wAFSizeConstraintSetSizeConstraintComparisonOperator = comparisonOperatorarg
  , _wAFSizeConstraintSetSizeConstraintFieldToMatch = fieldToMatcharg
  , _wAFSizeConstraintSetSizeConstraintSize = sizearg
  , _wAFSizeConstraintSetSizeConstraintTextTransformation = textTransformationarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-comparisonoperator
wafscsscComparisonOperator :: Lens' WAFSizeConstraintSetSizeConstraint (Val Text)
wafscsscComparisonOperator = lens _wAFSizeConstraintSetSizeConstraintComparisonOperator (\s a -> s { _wAFSizeConstraintSetSizeConstraintComparisonOperator = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-fieldtomatch
wafscsscFieldToMatch :: Lens' WAFSizeConstraintSetSizeConstraint WAFSizeConstraintSetFieldToMatch
wafscsscFieldToMatch = lens _wAFSizeConstraintSetSizeConstraintFieldToMatch (\s a -> s { _wAFSizeConstraintSetSizeConstraintFieldToMatch = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-size
wafscsscSize :: Lens' WAFSizeConstraintSetSizeConstraint (Val Integer')
wafscsscSize = lens _wAFSizeConstraintSetSizeConstraintSize (\s a -> s { _wAFSizeConstraintSetSizeConstraintSize = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-texttransformation
wafscsscTextTransformation :: Lens' WAFSizeConstraintSetSizeConstraint (Val Text)
wafscsscTextTransformation = lens _wAFSizeConstraintSetSizeConstraintTextTransformation (\s a -> s { _wAFSizeConstraintSetSizeConstraintTextTransformation = a })