packages feed

stratosphere-0.60.0: library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html

module Stratosphere.Resources.AppSyncGraphQLApi where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppSyncGraphQLApiAdditionalAuthenticationProvider
import Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig
import Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig
import Stratosphere.ResourceProperties.Tag
import Stratosphere.ResourceProperties.AppSyncGraphQLApiUserPoolConfig

-- | Full data type definition for AppSyncGraphQLApi. See 'appSyncGraphQLApi'
-- for a more convenient constructor.
data AppSyncGraphQLApi =
  AppSyncGraphQLApi
  { _appSyncGraphQLApiAdditionalAuthenticationProviders :: Maybe [AppSyncGraphQLApiAdditionalAuthenticationProvider]
  , _appSyncGraphQLApiAuthenticationType :: Val Text
  , _appSyncGraphQLApiLogConfig :: Maybe AppSyncGraphQLApiLogConfig
  , _appSyncGraphQLApiName :: Val Text
  , _appSyncGraphQLApiOpenIDConnectConfig :: Maybe AppSyncGraphQLApiOpenIDConnectConfig
  , _appSyncGraphQLApiTags :: Maybe [Tag]
  , _appSyncGraphQLApiUserPoolConfig :: Maybe AppSyncGraphQLApiUserPoolConfig
  , _appSyncGraphQLApiXrayEnabled :: Maybe (Val Bool)
  } deriving (Show, Eq)

instance ToResourceProperties AppSyncGraphQLApi where
  toResourceProperties AppSyncGraphQLApi{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::AppSync::GraphQLApi"
    , resourcePropertiesProperties =
        keyMapFromList $ catMaybes
        [ fmap (("AdditionalAuthenticationProviders",) . toJSON) _appSyncGraphQLApiAdditionalAuthenticationProviders
        , (Just . ("AuthenticationType",) . toJSON) _appSyncGraphQLApiAuthenticationType
        , fmap (("LogConfig",) . toJSON) _appSyncGraphQLApiLogConfig
        , (Just . ("Name",) . toJSON) _appSyncGraphQLApiName
        , fmap (("OpenIDConnectConfig",) . toJSON) _appSyncGraphQLApiOpenIDConnectConfig
        , fmap (("Tags",) . toJSON) _appSyncGraphQLApiTags
        , fmap (("UserPoolConfig",) . toJSON) _appSyncGraphQLApiUserPoolConfig
        , fmap (("XrayEnabled",) . toJSON) _appSyncGraphQLApiXrayEnabled
        ]
    }

-- | Constructor for 'AppSyncGraphQLApi' containing required fields as
-- arguments.
appSyncGraphQLApi
  :: Val Text -- ^ 'asgqlaAuthenticationType'
  -> Val Text -- ^ 'asgqlaName'
  -> AppSyncGraphQLApi
appSyncGraphQLApi authenticationTypearg namearg =
  AppSyncGraphQLApi
  { _appSyncGraphQLApiAdditionalAuthenticationProviders = Nothing
  , _appSyncGraphQLApiAuthenticationType = authenticationTypearg
  , _appSyncGraphQLApiLogConfig = Nothing
  , _appSyncGraphQLApiName = namearg
  , _appSyncGraphQLApiOpenIDConnectConfig = Nothing
  , _appSyncGraphQLApiTags = Nothing
  , _appSyncGraphQLApiUserPoolConfig = Nothing
  , _appSyncGraphQLApiXrayEnabled = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-additionalauthenticationproviders
asgqlaAdditionalAuthenticationProviders :: Lens' AppSyncGraphQLApi (Maybe [AppSyncGraphQLApiAdditionalAuthenticationProvider])
asgqlaAdditionalAuthenticationProviders = lens _appSyncGraphQLApiAdditionalAuthenticationProviders (\s a -> s { _appSyncGraphQLApiAdditionalAuthenticationProviders = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-authenticationtype
asgqlaAuthenticationType :: Lens' AppSyncGraphQLApi (Val Text)
asgqlaAuthenticationType = lens _appSyncGraphQLApiAuthenticationType (\s a -> s { _appSyncGraphQLApiAuthenticationType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-logconfig
asgqlaLogConfig :: Lens' AppSyncGraphQLApi (Maybe AppSyncGraphQLApiLogConfig)
asgqlaLogConfig = lens _appSyncGraphQLApiLogConfig (\s a -> s { _appSyncGraphQLApiLogConfig = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-name
asgqlaName :: Lens' AppSyncGraphQLApi (Val Text)
asgqlaName = lens _appSyncGraphQLApiName (\s a -> s { _appSyncGraphQLApiName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-openidconnectconfig
asgqlaOpenIDConnectConfig :: Lens' AppSyncGraphQLApi (Maybe AppSyncGraphQLApiOpenIDConnectConfig)
asgqlaOpenIDConnectConfig = lens _appSyncGraphQLApiOpenIDConnectConfig (\s a -> s { _appSyncGraphQLApiOpenIDConnectConfig = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-tags
asgqlaTags :: Lens' AppSyncGraphQLApi (Maybe [Tag])
asgqlaTags = lens _appSyncGraphQLApiTags (\s a -> s { _appSyncGraphQLApiTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig
asgqlaUserPoolConfig :: Lens' AppSyncGraphQLApi (Maybe AppSyncGraphQLApiUserPoolConfig)
asgqlaUserPoolConfig = lens _appSyncGraphQLApiUserPoolConfig (\s a -> s { _appSyncGraphQLApiUserPoolConfig = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-xrayenabled
asgqlaXrayEnabled :: Lens' AppSyncGraphQLApi (Maybe (Val Bool))
asgqlaXrayEnabled = lens _appSyncGraphQLApiXrayEnabled (\s a -> s { _appSyncGraphQLApiXrayEnabled = a })