stratosphere-0.22.2: library-gen/Stratosphere/Resources/GuardDutyFilter.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html
module Stratosphere.Resources.GuardDutyFilter where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.GuardDutyFilterFindingCriteria
-- | Full data type definition for GuardDutyFilter. See 'guardDutyFilter' for
-- a more convenient constructor.
data GuardDutyFilter =
GuardDutyFilter
{ _guardDutyFilterAction :: Val Text
, _guardDutyFilterDescription :: Val Text
, _guardDutyFilterDetectorId :: Val Text
, _guardDutyFilterFindingCriteria :: GuardDutyFilterFindingCriteria
, _guardDutyFilterName :: Maybe (Val Text)
, _guardDutyFilterRank :: Val Integer
} deriving (Show, Eq)
instance ToJSON GuardDutyFilter where
toJSON GuardDutyFilter{..} =
object $
catMaybes
[ (Just . ("Action",) . toJSON) _guardDutyFilterAction
, (Just . ("Description",) . toJSON) _guardDutyFilterDescription
, (Just . ("DetectorId",) . toJSON) _guardDutyFilterDetectorId
, (Just . ("FindingCriteria",) . toJSON) _guardDutyFilterFindingCriteria
, fmap (("Name",) . toJSON) _guardDutyFilterName
, (Just . ("Rank",) . toJSON . fmap Integer') _guardDutyFilterRank
]
instance FromJSON GuardDutyFilter where
parseJSON (Object obj) =
GuardDutyFilter <$>
(obj .: "Action") <*>
(obj .: "Description") <*>
(obj .: "DetectorId") <*>
(obj .: "FindingCriteria") <*>
(obj .:? "Name") <*>
fmap (fmap unInteger') (obj .: "Rank")
parseJSON _ = mempty
-- | Constructor for 'GuardDutyFilter' containing required fields as
-- arguments.
guardDutyFilter
:: Val Text -- ^ 'gdfAction'
-> Val Text -- ^ 'gdfDescription'
-> Val Text -- ^ 'gdfDetectorId'
-> GuardDutyFilterFindingCriteria -- ^ 'gdfFindingCriteria'
-> Val Integer -- ^ 'gdfRank'
-> GuardDutyFilter
guardDutyFilter actionarg descriptionarg detectorIdarg findingCriteriaarg rankarg =
GuardDutyFilter
{ _guardDutyFilterAction = actionarg
, _guardDutyFilterDescription = descriptionarg
, _guardDutyFilterDetectorId = detectorIdarg
, _guardDutyFilterFindingCriteria = findingCriteriaarg
, _guardDutyFilterName = Nothing
, _guardDutyFilterRank = rankarg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-action
gdfAction :: Lens' GuardDutyFilter (Val Text)
gdfAction = lens _guardDutyFilterAction (\s a -> s { _guardDutyFilterAction = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-description
gdfDescription :: Lens' GuardDutyFilter (Val Text)
gdfDescription = lens _guardDutyFilterDescription (\s a -> s { _guardDutyFilterDescription = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-detectorid
gdfDetectorId :: Lens' GuardDutyFilter (Val Text)
gdfDetectorId = lens _guardDutyFilterDetectorId (\s a -> s { _guardDutyFilterDetectorId = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-findingcriteria
gdfFindingCriteria :: Lens' GuardDutyFilter GuardDutyFilterFindingCriteria
gdfFindingCriteria = lens _guardDutyFilterFindingCriteria (\s a -> s { _guardDutyFilterFindingCriteria = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-name
gdfName :: Lens' GuardDutyFilter (Maybe (Val Text))
gdfName = lens _guardDutyFilterName (\s a -> s { _guardDutyFilterName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-rank
gdfRank :: Lens' GuardDutyFilter (Val Integer)
gdfRank = lens _guardDutyFilterRank (\s a -> s { _guardDutyFilterRank = a })