module Stratosphere.Resources.S3BucketPolicy where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
data S3BucketPolicy =
S3BucketPolicy
{ _s3BucketPolicyBucket :: Val Text
, _s3BucketPolicyPolicyDocument :: Object
} deriving (Show, Generic)
instance ToJSON S3BucketPolicy where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 15, omitNothingFields = True }
instance FromJSON S3BucketPolicy where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 15, omitNothingFields = True }
s3BucketPolicy
:: Val Text
-> Object
-> S3BucketPolicy
s3BucketPolicy bucketarg policyDocumentarg =
S3BucketPolicy
{ _s3BucketPolicyBucket = bucketarg
, _s3BucketPolicyPolicyDocument = policyDocumentarg
}
sbpBucket :: Lens' S3BucketPolicy (Val Text)
sbpBucket = lens _s3BucketPolicyBucket (\s a -> s { _s3BucketPolicyBucket = a })
sbpPolicyDocument :: Lens' S3BucketPolicy Object
sbpPolicyDocument = lens _s3BucketPolicyPolicyDocument (\s a -> s { _s3BucketPolicyPolicyDocument = a })