{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.ELBv2.CreateListener
(
createListener
, CreateListener
, clSSLPolicy
, clCertificates
, clLoadBalancerARN
, clProtocol
, clPort
, clDefaultActions
, createListenerResponse
, CreateListenerResponse
, clrsListeners
, clrsResponseStatus
) where
import Network.AWS.ELBv2.Types
import Network.AWS.ELBv2.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateListener = CreateListener'
{ _clSSLPolicy :: !(Maybe Text)
, _clCertificates :: !(Maybe [Certificate])
, _clLoadBalancerARN :: !Text
, _clProtocol :: !ProtocolEnum
, _clPort :: !Nat
, _clDefaultActions :: ![Action]
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createListener
:: Text
-> ProtocolEnum
-> Natural
-> CreateListener
createListener pLoadBalancerARN_ pProtocol_ pPort_ =
CreateListener'
{ _clSSLPolicy = Nothing
, _clCertificates = Nothing
, _clLoadBalancerARN = pLoadBalancerARN_
, _clProtocol = pProtocol_
, _clPort = _Nat # pPort_
, _clDefaultActions = mempty
}
clSSLPolicy :: Lens' CreateListener (Maybe Text)
clSSLPolicy = lens _clSSLPolicy (\ s a -> s{_clSSLPolicy = a});
clCertificates :: Lens' CreateListener [Certificate]
clCertificates = lens _clCertificates (\ s a -> s{_clCertificates = a}) . _Default . _Coerce;
clLoadBalancerARN :: Lens' CreateListener Text
clLoadBalancerARN = lens _clLoadBalancerARN (\ s a -> s{_clLoadBalancerARN = a});
clProtocol :: Lens' CreateListener ProtocolEnum
clProtocol = lens _clProtocol (\ s a -> s{_clProtocol = a});
clPort :: Lens' CreateListener Natural
clPort = lens _clPort (\ s a -> s{_clPort = a}) . _Nat;
clDefaultActions :: Lens' CreateListener [Action]
clDefaultActions = lens _clDefaultActions (\ s a -> s{_clDefaultActions = a}) . _Coerce;
instance AWSRequest CreateListener where
type Rs CreateListener = CreateListenerResponse
request = postQuery eLBv2
response
= receiveXMLWrapper "CreateListenerResult"
(\ s h x ->
CreateListenerResponse' <$>
(x .@? "Listeners" .!@ mempty >>=
may (parseXMLList "member"))
<*> (pure (fromEnum s)))
instance Hashable CreateListener
instance NFData CreateListener
instance ToHeaders CreateListener where
toHeaders = const mempty
instance ToPath CreateListener where
toPath = const "/"
instance ToQuery CreateListener where
toQuery CreateListener'{..}
= mconcat
["Action" =: ("CreateListener" :: ByteString),
"Version" =: ("2015-12-01" :: ByteString),
"SslPolicy" =: _clSSLPolicy,
"Certificates" =:
toQuery (toQueryList "member" <$> _clCertificates),
"LoadBalancerArn" =: _clLoadBalancerARN,
"Protocol" =: _clProtocol, "Port" =: _clPort,
"DefaultActions" =:
toQueryList "member" _clDefaultActions]
data CreateListenerResponse = CreateListenerResponse'
{ _clrsListeners :: !(Maybe [Listener])
, _clrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createListenerResponse
:: Int
-> CreateListenerResponse
createListenerResponse pResponseStatus_ =
CreateListenerResponse'
{ _clrsListeners = Nothing
, _clrsResponseStatus = pResponseStatus_
}
clrsListeners :: Lens' CreateListenerResponse [Listener]
clrsListeners = lens _clrsListeners (\ s a -> s{_clrsListeners = a}) . _Default . _Coerce;
clrsResponseStatus :: Lens' CreateListenerResponse Int
clrsResponseStatus = lens _clrsResponseStatus (\ s a -> s{_clrsResponseStatus = a});
instance NFData CreateListenerResponse