{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html module Stratosphere.Resources.ElasticLoadBalancingV2Listener where import Stratosphere.ResourceImports import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAction -- | Full data type definition for ElasticLoadBalancingV2Listener. See -- 'elasticLoadBalancingV2Listener' for a more convenient constructor. data ElasticLoadBalancingV2Listener = ElasticLoadBalancingV2Listener { _elasticLoadBalancingV2ListenerCertificates :: Maybe [ElasticLoadBalancingV2ListenerCertificate] , _elasticLoadBalancingV2ListenerDefaultActions :: [ElasticLoadBalancingV2ListenerAction] , _elasticLoadBalancingV2ListenerLoadBalancerArn :: Val Text , _elasticLoadBalancingV2ListenerPort :: Val Integer , _elasticLoadBalancingV2ListenerProtocol :: Val Text , _elasticLoadBalancingV2ListenerSslPolicy :: Maybe (Val Text) } deriving (Show, Eq) instance ToJSON ElasticLoadBalancingV2Listener where toJSON ElasticLoadBalancingV2Listener{..} = object $ catMaybes [ fmap (("Certificates",) . toJSON) _elasticLoadBalancingV2ListenerCertificates , (Just . ("DefaultActions",) . toJSON) _elasticLoadBalancingV2ListenerDefaultActions , (Just . ("LoadBalancerArn",) . toJSON) _elasticLoadBalancingV2ListenerLoadBalancerArn , (Just . ("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerPort , (Just . ("Protocol",) . toJSON) _elasticLoadBalancingV2ListenerProtocol , fmap (("SslPolicy",) . toJSON) _elasticLoadBalancingV2ListenerSslPolicy ] instance FromJSON ElasticLoadBalancingV2Listener where parseJSON (Object obj) = ElasticLoadBalancingV2Listener <$> (obj .:? "Certificates") <*> (obj .: "DefaultActions") <*> (obj .: "LoadBalancerArn") <*> fmap (fmap unInteger') (obj .: "Port") <*> (obj .: "Protocol") <*> (obj .:? "SslPolicy") parseJSON _ = mempty -- | Constructor for 'ElasticLoadBalancingV2Listener' containing required -- fields as arguments. elasticLoadBalancingV2Listener :: [ElasticLoadBalancingV2ListenerAction] -- ^ 'elbvlDefaultActions' -> Val Text -- ^ 'elbvlLoadBalancerArn' -> Val Integer -- ^ 'elbvlPort' -> Val Text -- ^ 'elbvlProtocol' -> ElasticLoadBalancingV2Listener elasticLoadBalancingV2Listener defaultActionsarg loadBalancerArnarg portarg protocolarg = ElasticLoadBalancingV2Listener { _elasticLoadBalancingV2ListenerCertificates = Nothing , _elasticLoadBalancingV2ListenerDefaultActions = defaultActionsarg , _elasticLoadBalancingV2ListenerLoadBalancerArn = loadBalancerArnarg , _elasticLoadBalancingV2ListenerPort = portarg , _elasticLoadBalancingV2ListenerProtocol = protocolarg , _elasticLoadBalancingV2ListenerSslPolicy = Nothing } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-certificates elbvlCertificates :: Lens' ElasticLoadBalancingV2Listener (Maybe [ElasticLoadBalancingV2ListenerCertificate]) elbvlCertificates = lens _elasticLoadBalancingV2ListenerCertificates (\s a -> s { _elasticLoadBalancingV2ListenerCertificates = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-defaultactions elbvlDefaultActions :: Lens' ElasticLoadBalancingV2Listener [ElasticLoadBalancingV2ListenerAction] elbvlDefaultActions = lens _elasticLoadBalancingV2ListenerDefaultActions (\s a -> s { _elasticLoadBalancingV2ListenerDefaultActions = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-loadbalancerarn elbvlLoadBalancerArn :: Lens' ElasticLoadBalancingV2Listener (Val Text) elbvlLoadBalancerArn = lens _elasticLoadBalancingV2ListenerLoadBalancerArn (\s a -> s { _elasticLoadBalancingV2ListenerLoadBalancerArn = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-port elbvlPort :: Lens' ElasticLoadBalancingV2Listener (Val Integer) elbvlPort = lens _elasticLoadBalancingV2ListenerPort (\s a -> s { _elasticLoadBalancingV2ListenerPort = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-protocol elbvlProtocol :: Lens' ElasticLoadBalancingV2Listener (Val Text) elbvlProtocol = lens _elasticLoadBalancingV2ListenerProtocol (\s a -> s { _elasticLoadBalancingV2ListenerProtocol = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-sslpolicy elbvlSslPolicy :: Lens' ElasticLoadBalancingV2Listener (Maybe (Val Text)) elbvlSslPolicy = lens _elasticLoadBalancingV2ListenerSslPolicy (\s a -> s { _elasticLoadBalancingV2ListenerSslPolicy = a })