packages feed

stratosphere-0.38.0: library-gen/Stratosphere/ResourceProperties/MediaStoreContainerCorsRule.hs

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

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

module Stratosphere.ResourceProperties.MediaStoreContainerCorsRule where

import Stratosphere.ResourceImports


-- | Full data type definition for MediaStoreContainerCorsRule. See
-- 'mediaStoreContainerCorsRule' for a more convenient constructor.
data MediaStoreContainerCorsRule =
  MediaStoreContainerCorsRule
  { _mediaStoreContainerCorsRuleAllowedHeaders :: Maybe (ValList Text)
  , _mediaStoreContainerCorsRuleAllowedMethods :: Maybe (ValList Text)
  , _mediaStoreContainerCorsRuleAllowedOrigins :: Maybe (ValList Text)
  , _mediaStoreContainerCorsRuleExposeHeaders :: Maybe (ValList Text)
  , _mediaStoreContainerCorsRuleMaxAgeSeconds :: Maybe (Val Integer)
  } deriving (Show, Eq)

instance ToJSON MediaStoreContainerCorsRule where
  toJSON MediaStoreContainerCorsRule{..} =
    object $
    catMaybes
    [ fmap (("AllowedHeaders",) . toJSON) _mediaStoreContainerCorsRuleAllowedHeaders
    , fmap (("AllowedMethods",) . toJSON) _mediaStoreContainerCorsRuleAllowedMethods
    , fmap (("AllowedOrigins",) . toJSON) _mediaStoreContainerCorsRuleAllowedOrigins
    , fmap (("ExposeHeaders",) . toJSON) _mediaStoreContainerCorsRuleExposeHeaders
    , fmap (("MaxAgeSeconds",) . toJSON) _mediaStoreContainerCorsRuleMaxAgeSeconds
    ]

-- | Constructor for 'MediaStoreContainerCorsRule' containing required fields
-- as arguments.
mediaStoreContainerCorsRule
  :: MediaStoreContainerCorsRule
mediaStoreContainerCorsRule  =
  MediaStoreContainerCorsRule
  { _mediaStoreContainerCorsRuleAllowedHeaders = Nothing
  , _mediaStoreContainerCorsRuleAllowedMethods = Nothing
  , _mediaStoreContainerCorsRuleAllowedOrigins = Nothing
  , _mediaStoreContainerCorsRuleExposeHeaders = Nothing
  , _mediaStoreContainerCorsRuleMaxAgeSeconds = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedheaders
msccrAllowedHeaders :: Lens' MediaStoreContainerCorsRule (Maybe (ValList Text))
msccrAllowedHeaders = lens _mediaStoreContainerCorsRuleAllowedHeaders (\s a -> s { _mediaStoreContainerCorsRuleAllowedHeaders = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedmethods
msccrAllowedMethods :: Lens' MediaStoreContainerCorsRule (Maybe (ValList Text))
msccrAllowedMethods = lens _mediaStoreContainerCorsRuleAllowedMethods (\s a -> s { _mediaStoreContainerCorsRuleAllowedMethods = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedorigins
msccrAllowedOrigins :: Lens' MediaStoreContainerCorsRule (Maybe (ValList Text))
msccrAllowedOrigins = lens _mediaStoreContainerCorsRuleAllowedOrigins (\s a -> s { _mediaStoreContainerCorsRuleAllowedOrigins = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-exposeheaders
msccrExposeHeaders :: Lens' MediaStoreContainerCorsRule (Maybe (ValList Text))
msccrExposeHeaders = lens _mediaStoreContainerCorsRuleExposeHeaders (\s a -> s { _mediaStoreContainerCorsRuleExposeHeaders = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-maxageseconds
msccrMaxAgeSeconds :: Lens' MediaStoreContainerCorsRule (Maybe (Val Integer))
msccrMaxAgeSeconds = lens _mediaStoreContainerCorsRuleMaxAgeSeconds (\s a -> s { _mediaStoreContainerCorsRuleMaxAgeSeconds = a })