module Stratosphere.ResourceProperties.S3LifecycleRule where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.S3LifecycleRuleNoncurrentVersionTransition
import Stratosphere.ResourceProperties.S3LifecycleRuleTransition
data S3LifecycleRule =
S3LifecycleRule
{ _s3LifecycleRuleExpirationDate :: Maybe (Val Text)
, _s3LifecycleRuleExpirationInDays :: Maybe (Val Integer')
, _s3LifecycleRuleId :: Maybe (Val Text)
, _s3LifecycleRuleNoncurrentVersionExpirationInDays :: Maybe (Val Integer')
, _s3LifecycleRuleNoncurrentVersionTransition :: Maybe S3LifecycleRuleNoncurrentVersionTransition
, _s3LifecycleRuleNoncurrentVersionTransitions :: Maybe [S3LifecycleRuleNoncurrentVersionTransition]
, _s3LifecycleRulePrefix :: Maybe (Val Text)
, _s3LifecycleRuleStatus :: Val Text
, _s3LifecycleRuleTransition :: Maybe S3LifecycleRuleTransition
, _s3LifecycleRuleTransitions :: Maybe [S3LifecycleRuleTransition]
} deriving (Show, Generic)
instance ToJSON S3LifecycleRule where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 16, omitNothingFields = True }
instance FromJSON S3LifecycleRule where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 16, omitNothingFields = True }
s3LifecycleRule
:: Val Text
-> S3LifecycleRule
s3LifecycleRule statusarg =
S3LifecycleRule
{ _s3LifecycleRuleExpirationDate = Nothing
, _s3LifecycleRuleExpirationInDays = Nothing
, _s3LifecycleRuleId = Nothing
, _s3LifecycleRuleNoncurrentVersionExpirationInDays = Nothing
, _s3LifecycleRuleNoncurrentVersionTransition = Nothing
, _s3LifecycleRuleNoncurrentVersionTransitions = Nothing
, _s3LifecycleRulePrefix = Nothing
, _s3LifecycleRuleStatus = statusarg
, _s3LifecycleRuleTransition = Nothing
, _s3LifecycleRuleTransitions = Nothing
}
slrExpirationDate :: Lens' S3LifecycleRule (Maybe (Val Text))
slrExpirationDate = lens _s3LifecycleRuleExpirationDate (\s a -> s { _s3LifecycleRuleExpirationDate = a })
slrExpirationInDays :: Lens' S3LifecycleRule (Maybe (Val Integer'))
slrExpirationInDays = lens _s3LifecycleRuleExpirationInDays (\s a -> s { _s3LifecycleRuleExpirationInDays = a })
slrId :: Lens' S3LifecycleRule (Maybe (Val Text))
slrId = lens _s3LifecycleRuleId (\s a -> s { _s3LifecycleRuleId = a })
slrNoncurrentVersionExpirationInDays :: Lens' S3LifecycleRule (Maybe (Val Integer'))
slrNoncurrentVersionExpirationInDays = lens _s3LifecycleRuleNoncurrentVersionExpirationInDays (\s a -> s { _s3LifecycleRuleNoncurrentVersionExpirationInDays = a })
slrNoncurrentVersionTransition :: Lens' S3LifecycleRule (Maybe S3LifecycleRuleNoncurrentVersionTransition)
slrNoncurrentVersionTransition = lens _s3LifecycleRuleNoncurrentVersionTransition (\s a -> s { _s3LifecycleRuleNoncurrentVersionTransition = a })
slrNoncurrentVersionTransitions :: Lens' S3LifecycleRule (Maybe [S3LifecycleRuleNoncurrentVersionTransition])
slrNoncurrentVersionTransitions = lens _s3LifecycleRuleNoncurrentVersionTransitions (\s a -> s { _s3LifecycleRuleNoncurrentVersionTransitions = a })
slrPrefix :: Lens' S3LifecycleRule (Maybe (Val Text))
slrPrefix = lens _s3LifecycleRulePrefix (\s a -> s { _s3LifecycleRulePrefix = a })
slrStatus :: Lens' S3LifecycleRule (Val Text)
slrStatus = lens _s3LifecycleRuleStatus (\s a -> s { _s3LifecycleRuleStatus = a })
slrTransition :: Lens' S3LifecycleRule (Maybe S3LifecycleRuleTransition)
slrTransition = lens _s3LifecycleRuleTransition (\s a -> s { _s3LifecycleRuleTransition = a })
slrTransitions :: Lens' S3LifecycleRule (Maybe [S3LifecycleRuleTransition])
slrTransitions = lens _s3LifecycleRuleTransitions (\s a -> s { _s3LifecycleRuleTransitions = a })