packages feed

stratosphere-0.32.0: library-gen/Stratosphere/Resources/RoboMakerRobotApplication.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robotapplication.html

module Stratosphere.Resources.RoboMakerRobotApplication where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.RoboMakerRobotApplicationRobotSoftwareSuite
import Stratosphere.ResourceProperties.RoboMakerRobotApplicationSourceConfig

-- | Full data type definition for RoboMakerRobotApplication. See
-- 'roboMakerRobotApplication' for a more convenient constructor.
data RoboMakerRobotApplication =
  RoboMakerRobotApplication
  { _roboMakerRobotApplicationCurrentRevisionId :: Maybe (Val Text)
  , _roboMakerRobotApplicationName :: Maybe (Val Text)
  , _roboMakerRobotApplicationRobotSoftwareSuite :: RoboMakerRobotApplicationRobotSoftwareSuite
  , _roboMakerRobotApplicationSources :: [RoboMakerRobotApplicationSourceConfig]
  , _roboMakerRobotApplicationTags :: Maybe Object
  } deriving (Show, Eq)

instance ToJSON RoboMakerRobotApplication where
  toJSON RoboMakerRobotApplication{..} =
    object $
    catMaybes
    [ fmap (("CurrentRevisionId",) . toJSON) _roboMakerRobotApplicationCurrentRevisionId
    , fmap (("Name",) . toJSON) _roboMakerRobotApplicationName
    , (Just . ("RobotSoftwareSuite",) . toJSON) _roboMakerRobotApplicationRobotSoftwareSuite
    , (Just . ("Sources",) . toJSON) _roboMakerRobotApplicationSources
    , fmap (("Tags",) . toJSON) _roboMakerRobotApplicationTags
    ]

-- | Constructor for 'RoboMakerRobotApplication' containing required fields as
-- arguments.
roboMakerRobotApplication
  :: RoboMakerRobotApplicationRobotSoftwareSuite -- ^ 'rmraRobotSoftwareSuite'
  -> [RoboMakerRobotApplicationSourceConfig] -- ^ 'rmraSources'
  -> RoboMakerRobotApplication
roboMakerRobotApplication robotSoftwareSuitearg sourcesarg =
  RoboMakerRobotApplication
  { _roboMakerRobotApplicationCurrentRevisionId = Nothing
  , _roboMakerRobotApplicationName = Nothing
  , _roboMakerRobotApplicationRobotSoftwareSuite = robotSoftwareSuitearg
  , _roboMakerRobotApplicationSources = sourcesarg
  , _roboMakerRobotApplicationTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robotapplication.html#cfn-robomaker-robotapplication-currentrevisionid
rmraCurrentRevisionId :: Lens' RoboMakerRobotApplication (Maybe (Val Text))
rmraCurrentRevisionId = lens _roboMakerRobotApplicationCurrentRevisionId (\s a -> s { _roboMakerRobotApplicationCurrentRevisionId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robotapplication.html#cfn-robomaker-robotapplication-name
rmraName :: Lens' RoboMakerRobotApplication (Maybe (Val Text))
rmraName = lens _roboMakerRobotApplicationName (\s a -> s { _roboMakerRobotApplicationName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robotapplication.html#cfn-robomaker-robotapplication-robotsoftwaresuite
rmraRobotSoftwareSuite :: Lens' RoboMakerRobotApplication RoboMakerRobotApplicationRobotSoftwareSuite
rmraRobotSoftwareSuite = lens _roboMakerRobotApplicationRobotSoftwareSuite (\s a -> s { _roboMakerRobotApplicationRobotSoftwareSuite = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robotapplication.html#cfn-robomaker-robotapplication-sources
rmraSources :: Lens' RoboMakerRobotApplication [RoboMakerRobotApplicationSourceConfig]
rmraSources = lens _roboMakerRobotApplicationSources (\s a -> s { _roboMakerRobotApplicationSources = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robotapplication.html#cfn-robomaker-robotapplication-tags
rmraTags :: Lens' RoboMakerRobotApplication (Maybe Object)
rmraTags = lens _roboMakerRobotApplicationTags (\s a -> s { _roboMakerRobotApplicationTags = a })