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

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

module Stratosphere.ResourceProperties.AppMeshVirtualRouterVirtualRouterListener where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppMeshVirtualRouterPortMapping

-- | Full data type definition for AppMeshVirtualRouterVirtualRouterListener.
-- See 'appMeshVirtualRouterVirtualRouterListener' for a more convenient
-- constructor.
data AppMeshVirtualRouterVirtualRouterListener =
  AppMeshVirtualRouterVirtualRouterListener
  { _appMeshVirtualRouterVirtualRouterListenerPortMapping :: AppMeshVirtualRouterPortMapping
  } deriving (Show, Eq)

instance ToJSON AppMeshVirtualRouterVirtualRouterListener where
  toJSON AppMeshVirtualRouterVirtualRouterListener{..} =
    object $
    catMaybes
    [ (Just . ("PortMapping",) . toJSON) _appMeshVirtualRouterVirtualRouterListenerPortMapping
    ]

-- | Constructor for 'AppMeshVirtualRouterVirtualRouterListener' containing
-- required fields as arguments.
appMeshVirtualRouterVirtualRouterListener
  :: AppMeshVirtualRouterPortMapping -- ^ 'amvrvrlPortMapping'
  -> AppMeshVirtualRouterVirtualRouterListener
appMeshVirtualRouterVirtualRouterListener portMappingarg =
  AppMeshVirtualRouterVirtualRouterListener
  { _appMeshVirtualRouterVirtualRouterListenerPortMapping = portMappingarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualrouter-virtualrouterlistener.html#cfn-appmesh-virtualrouter-virtualrouterlistener-portmapping
amvrvrlPortMapping :: Lens' AppMeshVirtualRouterVirtualRouterListener AppMeshVirtualRouterPortMapping
amvrvrlPortMapping = lens _appMeshVirtualRouterVirtualRouterListenerPortMapping (\s a -> s { _appMeshVirtualRouterVirtualRouterListenerPortMapping = a })