packages feed

stratosphere-0.4.2: library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html

module Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate where

import Control.Lens hiding ((.=))
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Monoid (mempty)
import Data.Text

import Stratosphere.Values


-- | Full data type definition for CloudFrontDistributionViewerCertificate.
-- See 'cloudFrontDistributionViewerCertificate' for a more convenient
-- constructor.
data CloudFrontDistributionViewerCertificate =
  CloudFrontDistributionViewerCertificate
  { _cloudFrontDistributionViewerCertificateAcmCertificateArn :: Maybe (Val Text)
  , _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate :: Maybe (Val Bool')
  , _cloudFrontDistributionViewerCertificateIamCertificateId :: Maybe (Val Text)
  , _cloudFrontDistributionViewerCertificateMinimumProtocolVersion :: Maybe (Val Text)
  , _cloudFrontDistributionViewerCertificateSslSupportMethod :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON CloudFrontDistributionViewerCertificate where
  toJSON CloudFrontDistributionViewerCertificate{..} =
    object $
    catMaybes
    [ ("AcmCertificateArn" .=) <$> _cloudFrontDistributionViewerCertificateAcmCertificateArn
    , ("CloudFrontDefaultCertificate" .=) <$> _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate
    , ("IamCertificateId" .=) <$> _cloudFrontDistributionViewerCertificateIamCertificateId
    , ("MinimumProtocolVersion" .=) <$> _cloudFrontDistributionViewerCertificateMinimumProtocolVersion
    , ("SslSupportMethod" .=) <$> _cloudFrontDistributionViewerCertificateSslSupportMethod
    ]

instance FromJSON CloudFrontDistributionViewerCertificate where
  parseJSON (Object obj) =
    CloudFrontDistributionViewerCertificate <$>
      obj .:? "AcmCertificateArn" <*>
      obj .:? "CloudFrontDefaultCertificate" <*>
      obj .:? "IamCertificateId" <*>
      obj .:? "MinimumProtocolVersion" <*>
      obj .:? "SslSupportMethod"
  parseJSON _ = mempty

-- | Constructor for 'CloudFrontDistributionViewerCertificate' containing
-- required fields as arguments.
cloudFrontDistributionViewerCertificate
  :: CloudFrontDistributionViewerCertificate
cloudFrontDistributionViewerCertificate  =
  CloudFrontDistributionViewerCertificate
  { _cloudFrontDistributionViewerCertificateAcmCertificateArn = Nothing
  , _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate = Nothing
  , _cloudFrontDistributionViewerCertificateIamCertificateId = Nothing
  , _cloudFrontDistributionViewerCertificateMinimumProtocolVersion = Nothing
  , _cloudFrontDistributionViewerCertificateSslSupportMethod = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-acmcertificatearn
cfdvcAcmCertificateArn :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Text))
cfdvcAcmCertificateArn = lens _cloudFrontDistributionViewerCertificateAcmCertificateArn (\s a -> s { _cloudFrontDistributionViewerCertificateAcmCertificateArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-cloudfrontdefaultcertificate
cfdvcCloudFrontDefaultCertificate :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Bool'))
cfdvcCloudFrontDefaultCertificate = lens _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate (\s a -> s { _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-iamcertificateid
cfdvcIamCertificateId :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Text))
cfdvcIamCertificateId = lens _cloudFrontDistributionViewerCertificateIamCertificateId (\s a -> s { _cloudFrontDistributionViewerCertificateIamCertificateId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-sslsupportmethod
cfdvcMinimumProtocolVersion :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Text))
cfdvcMinimumProtocolVersion = lens _cloudFrontDistributionViewerCertificateMinimumProtocolVersion (\s a -> s { _cloudFrontDistributionViewerCertificateMinimumProtocolVersion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-minimumprotocolversion
cfdvcSslSupportMethod :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Text))
cfdvcSslSupportMethod = lens _cloudFrontDistributionViewerCertificateSslSupportMethod (\s a -> s { _cloudFrontDistributionViewerCertificateSslSupportMethod = a })