packages feed

stratosphere-0.53.0: library-gen/Stratosphere/Resources/MediaStoreContainer.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html

module Stratosphere.Resources.MediaStoreContainer where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.MediaStoreContainerCorsRule
import Stratosphere.ResourceProperties.MediaStoreContainerMetricPolicy
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for MediaStoreContainer. See
-- 'mediaStoreContainer' for a more convenient constructor.
data MediaStoreContainer =
  MediaStoreContainer
  { _mediaStoreContainerAccessLoggingEnabled :: Maybe (Val Bool)
  , _mediaStoreContainerContainerName :: Val Text
  , _mediaStoreContainerCorsPolicy :: Maybe [MediaStoreContainerCorsRule]
  , _mediaStoreContainerLifecyclePolicy :: Maybe (Val Text)
  , _mediaStoreContainerMetricPolicy :: Maybe MediaStoreContainerMetricPolicy
  , _mediaStoreContainerPolicy :: Maybe (Val Text)
  , _mediaStoreContainerTags :: Maybe [Tag]
  } deriving (Show, Eq)

instance ToResourceProperties MediaStoreContainer where
  toResourceProperties MediaStoreContainer{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::MediaStore::Container"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("AccessLoggingEnabled",) . toJSON) _mediaStoreContainerAccessLoggingEnabled
        , (Just . ("ContainerName",) . toJSON) _mediaStoreContainerContainerName
        , fmap (("CorsPolicy",) . toJSON) _mediaStoreContainerCorsPolicy
        , fmap (("LifecyclePolicy",) . toJSON) _mediaStoreContainerLifecyclePolicy
        , fmap (("MetricPolicy",) . toJSON) _mediaStoreContainerMetricPolicy
        , fmap (("Policy",) . toJSON) _mediaStoreContainerPolicy
        , fmap (("Tags",) . toJSON) _mediaStoreContainerTags
        ]
    }

-- | Constructor for 'MediaStoreContainer' containing required fields as
-- arguments.
mediaStoreContainer
  :: Val Text -- ^ 'mscContainerName'
  -> MediaStoreContainer
mediaStoreContainer containerNamearg =
  MediaStoreContainer
  { _mediaStoreContainerAccessLoggingEnabled = Nothing
  , _mediaStoreContainerContainerName = containerNamearg
  , _mediaStoreContainerCorsPolicy = Nothing
  , _mediaStoreContainerLifecyclePolicy = Nothing
  , _mediaStoreContainerMetricPolicy = Nothing
  , _mediaStoreContainerPolicy = Nothing
  , _mediaStoreContainerTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-accessloggingenabled
mscAccessLoggingEnabled :: Lens' MediaStoreContainer (Maybe (Val Bool))
mscAccessLoggingEnabled = lens _mediaStoreContainerAccessLoggingEnabled (\s a -> s { _mediaStoreContainerAccessLoggingEnabled = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-containername
mscContainerName :: Lens' MediaStoreContainer (Val Text)
mscContainerName = lens _mediaStoreContainerContainerName (\s a -> s { _mediaStoreContainerContainerName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-corspolicy
mscCorsPolicy :: Lens' MediaStoreContainer (Maybe [MediaStoreContainerCorsRule])
mscCorsPolicy = lens _mediaStoreContainerCorsPolicy (\s a -> s { _mediaStoreContainerCorsPolicy = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-lifecyclepolicy
mscLifecyclePolicy :: Lens' MediaStoreContainer (Maybe (Val Text))
mscLifecyclePolicy = lens _mediaStoreContainerLifecyclePolicy (\s a -> s { _mediaStoreContainerLifecyclePolicy = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-metricpolicy
mscMetricPolicy :: Lens' MediaStoreContainer (Maybe MediaStoreContainerMetricPolicy)
mscMetricPolicy = lens _mediaStoreContainerMetricPolicy (\s a -> s { _mediaStoreContainerMetricPolicy = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-policy
mscPolicy :: Lens' MediaStoreContainer (Maybe (Val Text))
mscPolicy = lens _mediaStoreContainerPolicy (\s a -> s { _mediaStoreContainerPolicy = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-tags
mscTags :: Lens' MediaStoreContainer (Maybe [Tag])
mscTags = lens _mediaStoreContainerTags (\s a -> s { _mediaStoreContainerTags = a })