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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-storageconnector.html

module Stratosphere.ResourceProperties.AppStreamStackStorageConnector where

import Stratosphere.ResourceImports


-- | Full data type definition for AppStreamStackStorageConnector. See
-- 'appStreamStackStorageConnector' for a more convenient constructor.
data AppStreamStackStorageConnector =
  AppStreamStackStorageConnector
  { _appStreamStackStorageConnectorConnectorType :: Val Text
  , _appStreamStackStorageConnectorDomains :: Maybe (ValList Text)
  , _appStreamStackStorageConnectorResourceIdentifier :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON AppStreamStackStorageConnector where
  toJSON AppStreamStackStorageConnector{..} =
    object $
    catMaybes
    [ (Just . ("ConnectorType",) . toJSON) _appStreamStackStorageConnectorConnectorType
    , fmap (("Domains",) . toJSON) _appStreamStackStorageConnectorDomains
    , fmap (("ResourceIdentifier",) . toJSON) _appStreamStackStorageConnectorResourceIdentifier
    ]

-- | Constructor for 'AppStreamStackStorageConnector' containing required
-- fields as arguments.
appStreamStackStorageConnector
  :: Val Text -- ^ 'assscConnectorType'
  -> AppStreamStackStorageConnector
appStreamStackStorageConnector connectorTypearg =
  AppStreamStackStorageConnector
  { _appStreamStackStorageConnectorConnectorType = connectorTypearg
  , _appStreamStackStorageConnectorDomains = Nothing
  , _appStreamStackStorageConnectorResourceIdentifier = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-storageconnector.html#cfn-appstream-stack-storageconnector-connectortype
assscConnectorType :: Lens' AppStreamStackStorageConnector (Val Text)
assscConnectorType = lens _appStreamStackStorageConnectorConnectorType (\s a -> s { _appStreamStackStorageConnectorConnectorType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-storageconnector.html#cfn-appstream-stack-storageconnector-domains
assscDomains :: Lens' AppStreamStackStorageConnector (Maybe (ValList Text))
assscDomains = lens _appStreamStackStorageConnectorDomains (\s a -> s { _appStreamStackStorageConnectorDomains = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-storageconnector.html#cfn-appstream-stack-storageconnector-resourceidentifier
assscResourceIdentifier :: Lens' AppStreamStackStorageConnector (Maybe (Val Text))
assscResourceIdentifier = lens _appStreamStackStorageConnectorResourceIdentifier (\s a -> s { _appStreamStackStorageConnectorResourceIdentifier = a })