module Stratosphere.Resources.Bucket where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.ResourceTag
import Stratosphere.ResourceProperties.S3CorsConfiguration
import Stratosphere.ResourceProperties.S3LifecycleConfiguration
import Stratosphere.ResourceProperties.S3LoggingConfiguration
import Stratosphere.ResourceProperties.S3NotificationConfiguration
import Stratosphere.ResourceProperties.S3ReplicationConfiguration
import Stratosphere.ResourceProperties.S3VersioningConfiguration
import Stratosphere.ResourceProperties.S3WebsiteConfiguration
import Stratosphere.Types
data Bucket =
Bucket
{ _bucketAccessControl :: Maybe CannedACL
, _bucketBucketName :: Maybe (Val Text)
, _bucketCorsConfiguration :: Maybe S3CorsConfiguration
, _bucketLifecycleConfiguration :: Maybe S3LifecycleConfiguration
, _bucketLoggingConfiguration :: Maybe S3LoggingConfiguration
, _bucketNotificationConfiguration :: Maybe S3NotificationConfiguration
, _bucketReplicationConfiguration :: Maybe S3ReplicationConfiguration
, _bucketTags :: Maybe [ResourceTag]
, _bucketVersioningConfiguration :: Maybe S3VersioningConfiguration
, _bucketWebsiteConfiguration :: Maybe S3WebsiteConfiguration
} deriving (Show, Generic)
instance ToJSON Bucket where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 7, omitNothingFields = True }
instance FromJSON Bucket where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 7, omitNothingFields = True }
bucket
:: Bucket
bucket =
Bucket
{ _bucketAccessControl = Nothing
, _bucketBucketName = Nothing
, _bucketCorsConfiguration = Nothing
, _bucketLifecycleConfiguration = Nothing
, _bucketLoggingConfiguration = Nothing
, _bucketNotificationConfiguration = Nothing
, _bucketReplicationConfiguration = Nothing
, _bucketTags = Nothing
, _bucketVersioningConfiguration = Nothing
, _bucketWebsiteConfiguration = Nothing
}
bAccessControl :: Lens' Bucket (Maybe CannedACL)
bAccessControl = lens _bucketAccessControl (\s a -> s { _bucketAccessControl = a })
bBucketName :: Lens' Bucket (Maybe (Val Text))
bBucketName = lens _bucketBucketName (\s a -> s { _bucketBucketName = a })
bCorsConfiguration :: Lens' Bucket (Maybe S3CorsConfiguration)
bCorsConfiguration = lens _bucketCorsConfiguration (\s a -> s { _bucketCorsConfiguration = a })
bLifecycleConfiguration :: Lens' Bucket (Maybe S3LifecycleConfiguration)
bLifecycleConfiguration = lens _bucketLifecycleConfiguration (\s a -> s { _bucketLifecycleConfiguration = a })
bLoggingConfiguration :: Lens' Bucket (Maybe S3LoggingConfiguration)
bLoggingConfiguration = lens _bucketLoggingConfiguration (\s a -> s { _bucketLoggingConfiguration = a })
bNotificationConfiguration :: Lens' Bucket (Maybe S3NotificationConfiguration)
bNotificationConfiguration = lens _bucketNotificationConfiguration (\s a -> s { _bucketNotificationConfiguration = a })
bReplicationConfiguration :: Lens' Bucket (Maybe S3ReplicationConfiguration)
bReplicationConfiguration = lens _bucketReplicationConfiguration (\s a -> s { _bucketReplicationConfiguration = a })
bTags :: Lens' Bucket (Maybe [ResourceTag])
bTags = lens _bucketTags (\s a -> s { _bucketTags = a })
bVersioningConfiguration :: Lens' Bucket (Maybe S3VersioningConfiguration)
bVersioningConfiguration = lens _bucketVersioningConfiguration (\s a -> s { _bucketVersioningConfiguration = a })
bWebsiteConfiguration :: Lens' Bucket (Maybe S3WebsiteConfiguration)
bWebsiteConfiguration = lens _bucketWebsiteConfiguration (\s a -> s { _bucketWebsiteConfiguration = a })