packages feed

stratosphere-0.47.0: library-gen/Stratosphere/ResourceProperties/AccessAnalyzerAnalyzerFilter.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-accessanalyzer-analyzer-filter.html

module Stratosphere.ResourceProperties.AccessAnalyzerAnalyzerFilter where

import Stratosphere.ResourceImports


-- | Full data type definition for AccessAnalyzerAnalyzerFilter. See
-- 'accessAnalyzerAnalyzerFilter' for a more convenient constructor.
data AccessAnalyzerAnalyzerFilter =
  AccessAnalyzerAnalyzerFilter
  { _accessAnalyzerAnalyzerFilterContains :: Maybe (ValList Text)
  , _accessAnalyzerAnalyzerFilterEq :: Maybe (ValList Text)
  , _accessAnalyzerAnalyzerFilterExists :: Maybe (Val Bool)
  , _accessAnalyzerAnalyzerFilterNeq :: Maybe (ValList Text)
  , _accessAnalyzerAnalyzerFilterProperty :: Val Text
  } deriving (Show, Eq)

instance ToJSON AccessAnalyzerAnalyzerFilter where
  toJSON AccessAnalyzerAnalyzerFilter{..} =
    object $
    catMaybes
    [ fmap (("Contains",) . toJSON) _accessAnalyzerAnalyzerFilterContains
    , fmap (("Eq",) . toJSON) _accessAnalyzerAnalyzerFilterEq
    , fmap (("Exists",) . toJSON) _accessAnalyzerAnalyzerFilterExists
    , fmap (("Neq",) . toJSON) _accessAnalyzerAnalyzerFilterNeq
    , (Just . ("Property",) . toJSON) _accessAnalyzerAnalyzerFilterProperty
    ]

-- | Constructor for 'AccessAnalyzerAnalyzerFilter' containing required fields
-- as arguments.
accessAnalyzerAnalyzerFilter
  :: Val Text -- ^ 'aaafProperty'
  -> AccessAnalyzerAnalyzerFilter
accessAnalyzerAnalyzerFilter propertyarg =
  AccessAnalyzerAnalyzerFilter
  { _accessAnalyzerAnalyzerFilterContains = Nothing
  , _accessAnalyzerAnalyzerFilterEq = Nothing
  , _accessAnalyzerAnalyzerFilterExists = Nothing
  , _accessAnalyzerAnalyzerFilterNeq = Nothing
  , _accessAnalyzerAnalyzerFilterProperty = propertyarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-accessanalyzer-analyzer-filter.html#cfn-accessanalyzer-analyzer-filter-contains
aaafContains :: Lens' AccessAnalyzerAnalyzerFilter (Maybe (ValList Text))
aaafContains = lens _accessAnalyzerAnalyzerFilterContains (\s a -> s { _accessAnalyzerAnalyzerFilterContains = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-accessanalyzer-analyzer-filter.html#cfn-accessanalyzer-analyzer-filter-eq
aaafEq :: Lens' AccessAnalyzerAnalyzerFilter (Maybe (ValList Text))
aaafEq = lens _accessAnalyzerAnalyzerFilterEq (\s a -> s { _accessAnalyzerAnalyzerFilterEq = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-accessanalyzer-analyzer-filter.html#cfn-accessanalyzer-analyzer-filter-exists
aaafExists :: Lens' AccessAnalyzerAnalyzerFilter (Maybe (Val Bool))
aaafExists = lens _accessAnalyzerAnalyzerFilterExists (\s a -> s { _accessAnalyzerAnalyzerFilterExists = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-accessanalyzer-analyzer-filter.html#cfn-accessanalyzer-analyzer-filter-neq
aaafNeq :: Lens' AccessAnalyzerAnalyzerFilter (Maybe (ValList Text))
aaafNeq = lens _accessAnalyzerAnalyzerFilterNeq (\s a -> s { _accessAnalyzerAnalyzerFilterNeq = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-accessanalyzer-analyzer-filter.html#cfn-accessanalyzer-analyzer-filter-property
aaafProperty :: Lens' AccessAnalyzerAnalyzerFilter (Val Text)
aaafProperty = lens _accessAnalyzerAnalyzerFilterProperty (\s a -> s { _accessAnalyzerAnalyzerFilterProperty = a })