amazonka-lightsail-1.6.0: gen/Network/AWS/Lightsail/CreateLoadBalancerTLSCertificate.hs
{-# 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 #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.Lightsail.CreateLoadBalancerTLSCertificate
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a Lightsail load balancer TLS certificate.
--
--
-- TLS is just an updated, more secure version of Secure Socket Layer (SSL).
--
module Network.AWS.Lightsail.CreateLoadBalancerTLSCertificate
(
-- * Creating a Request
createLoadBalancerTLSCertificate
, CreateLoadBalancerTLSCertificate
-- * Request Lenses
, clbtcCertificateAlternativeNames
, clbtcLoadBalancerName
, clbtcCertificateName
, clbtcCertificateDomainName
-- * Destructuring the Response
, createLoadBalancerTLSCertificateResponse
, CreateLoadBalancerTLSCertificateResponse
-- * Response Lenses
, clbtcrsOperations
, clbtcrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Lightsail.Types
import Network.AWS.Lightsail.Types.Product
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'createLoadBalancerTLSCertificate' smart constructor.
data CreateLoadBalancerTLSCertificate = CreateLoadBalancerTLSCertificate'
{ _clbtcCertificateAlternativeNames :: !(Maybe [Text])
, _clbtcLoadBalancerName :: !Text
, _clbtcCertificateName :: !Text
, _clbtcCertificateDomainName :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateLoadBalancerTLSCertificate' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'clbtcCertificateAlternativeNames' - An array of strings listing alternative domains and subdomains for your SSL/TLS certificate. Lightsail will de-dupe the names for you. You can have a maximum of 9 alternative names (in addition to the 1 primary domain). We do not support wildcards (e.g., @*.example.com@ ).
--
-- * 'clbtcLoadBalancerName' - The load balancer name where you want to create the SSL/TLS certificate.
--
-- * 'clbtcCertificateName' - The SSL/TLS certificate name. You can have up to 10 certificates in your account at one time. Each Lightsail load balancer can have up to 2 certificates associated with it at one time. There is also an overall limit to the number of certificates that can be issue in a 365-day period. For more information, see <http://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html Limits> .
--
-- * 'clbtcCertificateDomainName' - The domain name (e.g., @example.com@ ) for your SSL/TLS certificate.
createLoadBalancerTLSCertificate
:: Text -- ^ 'clbtcLoadBalancerName'
-> Text -- ^ 'clbtcCertificateName'
-> Text -- ^ 'clbtcCertificateDomainName'
-> CreateLoadBalancerTLSCertificate
createLoadBalancerTLSCertificate pLoadBalancerName_ pCertificateName_ pCertificateDomainName_ =
CreateLoadBalancerTLSCertificate'
{ _clbtcCertificateAlternativeNames = Nothing
, _clbtcLoadBalancerName = pLoadBalancerName_
, _clbtcCertificateName = pCertificateName_
, _clbtcCertificateDomainName = pCertificateDomainName_
}
-- | An array of strings listing alternative domains and subdomains for your SSL/TLS certificate. Lightsail will de-dupe the names for you. You can have a maximum of 9 alternative names (in addition to the 1 primary domain). We do not support wildcards (e.g., @*.example.com@ ).
clbtcCertificateAlternativeNames :: Lens' CreateLoadBalancerTLSCertificate [Text]
clbtcCertificateAlternativeNames = lens _clbtcCertificateAlternativeNames (\ s a -> s{_clbtcCertificateAlternativeNames = a}) . _Default . _Coerce
-- | The load balancer name where you want to create the SSL/TLS certificate.
clbtcLoadBalancerName :: Lens' CreateLoadBalancerTLSCertificate Text
clbtcLoadBalancerName = lens _clbtcLoadBalancerName (\ s a -> s{_clbtcLoadBalancerName = a})
-- | The SSL/TLS certificate name. You can have up to 10 certificates in your account at one time. Each Lightsail load balancer can have up to 2 certificates associated with it at one time. There is also an overall limit to the number of certificates that can be issue in a 365-day period. For more information, see <http://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html Limits> .
clbtcCertificateName :: Lens' CreateLoadBalancerTLSCertificate Text
clbtcCertificateName = lens _clbtcCertificateName (\ s a -> s{_clbtcCertificateName = a})
-- | The domain name (e.g., @example.com@ ) for your SSL/TLS certificate.
clbtcCertificateDomainName :: Lens' CreateLoadBalancerTLSCertificate Text
clbtcCertificateDomainName = lens _clbtcCertificateDomainName (\ s a -> s{_clbtcCertificateDomainName = a})
instance AWSRequest CreateLoadBalancerTLSCertificate
where
type Rs CreateLoadBalancerTLSCertificate =
CreateLoadBalancerTLSCertificateResponse
request = postJSON lightsail
response
= receiveJSON
(\ s h x ->
CreateLoadBalancerTLSCertificateResponse' <$>
(x .?> "operations" .!@ mempty) <*>
(pure (fromEnum s)))
instance Hashable CreateLoadBalancerTLSCertificate
where
instance NFData CreateLoadBalancerTLSCertificate
where
instance ToHeaders CreateLoadBalancerTLSCertificate
where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("Lightsail_20161128.CreateLoadBalancerTlsCertificate"
:: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateLoadBalancerTLSCertificate
where
toJSON CreateLoadBalancerTLSCertificate'{..}
= object
(catMaybes
[("certificateAlternativeNames" .=) <$>
_clbtcCertificateAlternativeNames,
Just ("loadBalancerName" .= _clbtcLoadBalancerName),
Just ("certificateName" .= _clbtcCertificateName),
Just
("certificateDomainName" .=
_clbtcCertificateDomainName)])
instance ToPath CreateLoadBalancerTLSCertificate
where
toPath = const "/"
instance ToQuery CreateLoadBalancerTLSCertificate
where
toQuery = const mempty
-- | /See:/ 'createLoadBalancerTLSCertificateResponse' smart constructor.
data CreateLoadBalancerTLSCertificateResponse = CreateLoadBalancerTLSCertificateResponse'
{ _clbtcrsOperations :: !(Maybe [Operation])
, _clbtcrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateLoadBalancerTLSCertificateResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'clbtcrsOperations' - An object containing information about the API operations.
--
-- * 'clbtcrsResponseStatus' - -- | The response status code.
createLoadBalancerTLSCertificateResponse
:: Int -- ^ 'clbtcrsResponseStatus'
-> CreateLoadBalancerTLSCertificateResponse
createLoadBalancerTLSCertificateResponse pResponseStatus_ =
CreateLoadBalancerTLSCertificateResponse'
{_clbtcrsOperations = Nothing, _clbtcrsResponseStatus = pResponseStatus_}
-- | An object containing information about the API operations.
clbtcrsOperations :: Lens' CreateLoadBalancerTLSCertificateResponse [Operation]
clbtcrsOperations = lens _clbtcrsOperations (\ s a -> s{_clbtcrsOperations = a}) . _Default . _Coerce
-- | -- | The response status code.
clbtcrsResponseStatus :: Lens' CreateLoadBalancerTLSCertificateResponse Int
clbtcrsResponseStatus = lens _clbtcrsResponseStatus (\ s a -> s{_clbtcrsResponseStatus = a})
instance NFData
CreateLoadBalancerTLSCertificateResponse
where