packages feed

stratosphere-0.14.0: library-gen/Stratosphere/Resources/InspectorAssessmentTemplate.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-assessmenttemplate.html

module Stratosphere.Resources.InspectorAssessmentTemplate 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.Tag

-- | Full data type definition for InspectorAssessmentTemplate. See
-- 'inspectorAssessmentTemplate' for a more convenient constructor.
data InspectorAssessmentTemplate =
  InspectorAssessmentTemplate
  { _inspectorAssessmentTemplateAssessmentTargetArn :: Val Text
  , _inspectorAssessmentTemplateAssessmentTemplateName :: Maybe (Val Text)
  , _inspectorAssessmentTemplateDurationInSeconds :: Val Integer
  , _inspectorAssessmentTemplateRulesPackageArns :: ValList Text
  , _inspectorAssessmentTemplateUserAttributesForFindings :: Maybe [Tag]
  } deriving (Show, Eq)

instance ToJSON InspectorAssessmentTemplate where
  toJSON InspectorAssessmentTemplate{..} =
    object $
    catMaybes
    [ (Just . ("AssessmentTargetArn",) . toJSON) _inspectorAssessmentTemplateAssessmentTargetArn
    , fmap (("AssessmentTemplateName",) . toJSON) _inspectorAssessmentTemplateAssessmentTemplateName
    , (Just . ("DurationInSeconds",) . toJSON . fmap Integer') _inspectorAssessmentTemplateDurationInSeconds
    , (Just . ("RulesPackageArns",) . toJSON) _inspectorAssessmentTemplateRulesPackageArns
    , fmap (("UserAttributesForFindings",) . toJSON) _inspectorAssessmentTemplateUserAttributesForFindings
    ]

instance FromJSON InspectorAssessmentTemplate where
  parseJSON (Object obj) =
    InspectorAssessmentTemplate <$>
      (obj .: "AssessmentTargetArn") <*>
      (obj .:? "AssessmentTemplateName") <*>
      fmap (fmap unInteger') (obj .: "DurationInSeconds") <*>
      (obj .: "RulesPackageArns") <*>
      (obj .:? "UserAttributesForFindings")
  parseJSON _ = mempty

-- | Constructor for 'InspectorAssessmentTemplate' containing required fields
-- as arguments.
inspectorAssessmentTemplate
  :: Val Text -- ^ 'iatAssessmentTargetArn'
  -> Val Integer -- ^ 'iatDurationInSeconds'
  -> ValList Text -- ^ 'iatRulesPackageArns'
  -> InspectorAssessmentTemplate
inspectorAssessmentTemplate assessmentTargetArnarg durationInSecondsarg rulesPackageArnsarg =
  InspectorAssessmentTemplate
  { _inspectorAssessmentTemplateAssessmentTargetArn = assessmentTargetArnarg
  , _inspectorAssessmentTemplateAssessmentTemplateName = Nothing
  , _inspectorAssessmentTemplateDurationInSeconds = durationInSecondsarg
  , _inspectorAssessmentTemplateRulesPackageArns = rulesPackageArnsarg
  , _inspectorAssessmentTemplateUserAttributesForFindings = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-assessmenttemplate.html#cfn-inspector-assessmenttemplate-assessmenttargetarn
iatAssessmentTargetArn :: Lens' InspectorAssessmentTemplate (Val Text)
iatAssessmentTargetArn = lens _inspectorAssessmentTemplateAssessmentTargetArn (\s a -> s { _inspectorAssessmentTemplateAssessmentTargetArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-assessmenttemplate.html#cfn-inspector-assessmenttemplate-assessmenttemplatename
iatAssessmentTemplateName :: Lens' InspectorAssessmentTemplate (Maybe (Val Text))
iatAssessmentTemplateName = lens _inspectorAssessmentTemplateAssessmentTemplateName (\s a -> s { _inspectorAssessmentTemplateAssessmentTemplateName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-assessmenttemplate.html#cfn-inspector-assessmenttemplate-durationinseconds
iatDurationInSeconds :: Lens' InspectorAssessmentTemplate (Val Integer)
iatDurationInSeconds = lens _inspectorAssessmentTemplateDurationInSeconds (\s a -> s { _inspectorAssessmentTemplateDurationInSeconds = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-assessmenttemplate.html#cfn-inspector-assessmenttemplate-rulespackagearns
iatRulesPackageArns :: Lens' InspectorAssessmentTemplate (ValList Text)
iatRulesPackageArns = lens _inspectorAssessmentTemplateRulesPackageArns (\s a -> s { _inspectorAssessmentTemplateRulesPackageArns = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-assessmenttemplate.html#cfn-inspector-assessmenttemplate-userattributesforfindings
iatUserAttributesForFindings :: Lens' InspectorAssessmentTemplate (Maybe [Tag])
iatUserAttributesForFindings = lens _inspectorAssessmentTemplateUserAttributesForFindings (\s a -> s { _inspectorAssessmentTemplateUserAttributesForFindings = a })