packages feed

stratosphere-0.36.0: library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodePortMapping.hs

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

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

module Stratosphere.ResourceProperties.AppMeshVirtualNodePortMapping where

import Stratosphere.ResourceImports


-- | Full data type definition for AppMeshVirtualNodePortMapping. See
-- 'appMeshVirtualNodePortMapping' for a more convenient constructor.
data AppMeshVirtualNodePortMapping =
  AppMeshVirtualNodePortMapping
  { _appMeshVirtualNodePortMappingPort :: Val Integer
  , _appMeshVirtualNodePortMappingProtocol :: Val Text
  } deriving (Show, Eq)

instance ToJSON AppMeshVirtualNodePortMapping where
  toJSON AppMeshVirtualNodePortMapping{..} =
    object $
    catMaybes
    [ (Just . ("Port",) . toJSON) _appMeshVirtualNodePortMappingPort
    , (Just . ("Protocol",) . toJSON) _appMeshVirtualNodePortMappingProtocol
    ]

-- | Constructor for 'AppMeshVirtualNodePortMapping' containing required
-- fields as arguments.
appMeshVirtualNodePortMapping
  :: Val Integer -- ^ 'amvnpmPort'
  -> Val Text -- ^ 'amvnpmProtocol'
  -> AppMeshVirtualNodePortMapping
appMeshVirtualNodePortMapping portarg protocolarg =
  AppMeshVirtualNodePortMapping
  { _appMeshVirtualNodePortMappingPort = portarg
  , _appMeshVirtualNodePortMappingProtocol = protocolarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-portmapping.html#cfn-appmesh-virtualnode-portmapping-port
amvnpmPort :: Lens' AppMeshVirtualNodePortMapping (Val Integer)
amvnpmPort = lens _appMeshVirtualNodePortMappingPort (\s a -> s { _appMeshVirtualNodePortMappingPort = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-portmapping.html#cfn-appmesh-virtualnode-portmapping-protocol
amvnpmProtocol :: Lens' AppMeshVirtualNodePortMapping (Val Text)
amvnpmProtocol = lens _appMeshVirtualNodePortMappingProtocol (\s a -> s { _appMeshVirtualNodePortMappingProtocol = a })