packages feed

stratosphere-0.57.0: library-gen/Stratosphere/ResourceProperties/AppMeshVirtualGatewayVirtualGatewaySpec.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayspec.html

module Stratosphere.ResourceProperties.AppMeshVirtualGatewayVirtualGatewaySpec where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppMeshVirtualGatewayVirtualGatewayBackendDefaults
import Stratosphere.ResourceProperties.AppMeshVirtualGatewayVirtualGatewayListener
import Stratosphere.ResourceProperties.AppMeshVirtualGatewayVirtualGatewayLogging

-- | Full data type definition for AppMeshVirtualGatewayVirtualGatewaySpec.
-- See 'appMeshVirtualGatewayVirtualGatewaySpec' for a more convenient
-- constructor.
data AppMeshVirtualGatewayVirtualGatewaySpec =
  AppMeshVirtualGatewayVirtualGatewaySpec
  { _appMeshVirtualGatewayVirtualGatewaySpecBackendDefaults :: Maybe AppMeshVirtualGatewayVirtualGatewayBackendDefaults
  , _appMeshVirtualGatewayVirtualGatewaySpecListeners :: [AppMeshVirtualGatewayVirtualGatewayListener]
  , _appMeshVirtualGatewayVirtualGatewaySpecLogging :: Maybe AppMeshVirtualGatewayVirtualGatewayLogging
  } deriving (Show, Eq)

instance ToJSON AppMeshVirtualGatewayVirtualGatewaySpec where
  toJSON AppMeshVirtualGatewayVirtualGatewaySpec{..} =
    object $
    catMaybes
    [ fmap (("BackendDefaults",) . toJSON) _appMeshVirtualGatewayVirtualGatewaySpecBackendDefaults
    , (Just . ("Listeners",) . toJSON) _appMeshVirtualGatewayVirtualGatewaySpecListeners
    , fmap (("Logging",) . toJSON) _appMeshVirtualGatewayVirtualGatewaySpecLogging
    ]

-- | Constructor for 'AppMeshVirtualGatewayVirtualGatewaySpec' containing
-- required fields as arguments.
appMeshVirtualGatewayVirtualGatewaySpec
  :: [AppMeshVirtualGatewayVirtualGatewayListener] -- ^ 'amvgvgsListeners'
  -> AppMeshVirtualGatewayVirtualGatewaySpec
appMeshVirtualGatewayVirtualGatewaySpec listenersarg =
  AppMeshVirtualGatewayVirtualGatewaySpec
  { _appMeshVirtualGatewayVirtualGatewaySpecBackendDefaults = Nothing
  , _appMeshVirtualGatewayVirtualGatewaySpecListeners = listenersarg
  , _appMeshVirtualGatewayVirtualGatewaySpecLogging = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayspec.html#cfn-appmesh-virtualgateway-virtualgatewayspec-backenddefaults
amvgvgsBackendDefaults :: Lens' AppMeshVirtualGatewayVirtualGatewaySpec (Maybe AppMeshVirtualGatewayVirtualGatewayBackendDefaults)
amvgvgsBackendDefaults = lens _appMeshVirtualGatewayVirtualGatewaySpecBackendDefaults (\s a -> s { _appMeshVirtualGatewayVirtualGatewaySpecBackendDefaults = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayspec.html#cfn-appmesh-virtualgateway-virtualgatewayspec-listeners
amvgvgsListeners :: Lens' AppMeshVirtualGatewayVirtualGatewaySpec [AppMeshVirtualGatewayVirtualGatewayListener]
amvgvgsListeners = lens _appMeshVirtualGatewayVirtualGatewaySpecListeners (\s a -> s { _appMeshVirtualGatewayVirtualGatewaySpecListeners = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayspec.html#cfn-appmesh-virtualgateway-virtualgatewayspec-logging
amvgvgsLogging :: Lens' AppMeshVirtualGatewayVirtualGatewaySpec (Maybe AppMeshVirtualGatewayVirtualGatewayLogging)
amvgvgsLogging = lens _appMeshVirtualGatewayVirtualGatewaySpecLogging (\s a -> s { _appMeshVirtualGatewayVirtualGatewaySpecLogging = a })