module Stratosphere.S3.Bucket.TargetObjectKeyFormatProperty (
        module Exports, TargetObjectKeyFormatProperty(..),
        mkTargetObjectKeyFormatProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.S3.Bucket.PartitionedPrefixProperty as Exports
import Stratosphere.ResourceProperties
data TargetObjectKeyFormatProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-targetobjectkeyformat.html>
    TargetObjectKeyFormatProperty {TargetObjectKeyFormatProperty -> ()
haddock_workaround_ :: (),
                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-targetobjectkeyformat.html#cfn-s3-bucket-targetobjectkeyformat-partitionedprefix>
                                   TargetObjectKeyFormatProperty -> Maybe PartitionedPrefixProperty
partitionedPrefix :: (Prelude.Maybe PartitionedPrefixProperty),
                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-targetobjectkeyformat.html#cfn-s3-bucket-targetobjectkeyformat-simpleprefix>
                                   TargetObjectKeyFormatProperty -> Maybe Object
simplePrefix :: (Prelude.Maybe JSON.Object)}
  deriving stock (TargetObjectKeyFormatProperty
-> TargetObjectKeyFormatProperty -> Bool
(TargetObjectKeyFormatProperty
 -> TargetObjectKeyFormatProperty -> Bool)
-> (TargetObjectKeyFormatProperty
    -> TargetObjectKeyFormatProperty -> Bool)
-> Eq TargetObjectKeyFormatProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TargetObjectKeyFormatProperty
-> TargetObjectKeyFormatProperty -> Bool
== :: TargetObjectKeyFormatProperty
-> TargetObjectKeyFormatProperty -> Bool
$c/= :: TargetObjectKeyFormatProperty
-> TargetObjectKeyFormatProperty -> Bool
/= :: TargetObjectKeyFormatProperty
-> TargetObjectKeyFormatProperty -> Bool
Prelude.Eq, Int -> TargetObjectKeyFormatProperty -> ShowS
[TargetObjectKeyFormatProperty] -> ShowS
TargetObjectKeyFormatProperty -> String
(Int -> TargetObjectKeyFormatProperty -> ShowS)
-> (TargetObjectKeyFormatProperty -> String)
-> ([TargetObjectKeyFormatProperty] -> ShowS)
-> Show TargetObjectKeyFormatProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TargetObjectKeyFormatProperty -> ShowS
showsPrec :: Int -> TargetObjectKeyFormatProperty -> ShowS
$cshow :: TargetObjectKeyFormatProperty -> String
show :: TargetObjectKeyFormatProperty -> String
$cshowList :: [TargetObjectKeyFormatProperty] -> ShowS
showList :: [TargetObjectKeyFormatProperty] -> ShowS
Prelude.Show)
mkTargetObjectKeyFormatProperty :: TargetObjectKeyFormatProperty
mkTargetObjectKeyFormatProperty :: TargetObjectKeyFormatProperty
mkTargetObjectKeyFormatProperty
  = TargetObjectKeyFormatProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), partitionedPrefix :: Maybe PartitionedPrefixProperty
partitionedPrefix = Maybe PartitionedPrefixProperty
forall a. Maybe a
Prelude.Nothing,
       simplePrefix :: Maybe Object
simplePrefix = Maybe Object
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties TargetObjectKeyFormatProperty where
  toResourceProperties :: TargetObjectKeyFormatProperty -> ResourceProperties
toResourceProperties TargetObjectKeyFormatProperty {Maybe Object
Maybe PartitionedPrefixProperty
()
haddock_workaround_ :: TargetObjectKeyFormatProperty -> ()
partitionedPrefix :: TargetObjectKeyFormatProperty -> Maybe PartitionedPrefixProperty
simplePrefix :: TargetObjectKeyFormatProperty -> Maybe Object
haddock_workaround_ :: ()
partitionedPrefix :: Maybe PartitionedPrefixProperty
simplePrefix :: Maybe Object
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::S3::Bucket.TargetObjectKeyFormat",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Item Object] -> Object
forall l. IsList l => [Item l] -> l
Prelude.fromList
                        ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
                           [Key -> PartitionedPrefixProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"PartitionedPrefix" (PartitionedPrefixProperty -> (Key, Value))
-> Maybe PartitionedPrefixProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PartitionedPrefixProperty
partitionedPrefix,
                            Key -> Object -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"SimplePrefix" (Object -> (Key, Value)) -> Maybe Object -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Object
simplePrefix])}
instance JSON.ToJSON TargetObjectKeyFormatProperty where
  toJSON :: TargetObjectKeyFormatProperty -> Value
toJSON TargetObjectKeyFormatProperty {Maybe Object
Maybe PartitionedPrefixProperty
()
haddock_workaround_ :: TargetObjectKeyFormatProperty -> ()
partitionedPrefix :: TargetObjectKeyFormatProperty -> Maybe PartitionedPrefixProperty
simplePrefix :: TargetObjectKeyFormatProperty -> Maybe Object
haddock_workaround_ :: ()
partitionedPrefix :: Maybe PartitionedPrefixProperty
simplePrefix :: Maybe Object
..}
    = [(Key, Value)] -> Value
JSON.object
        ([Item [(Key, Value)]] -> [(Key, Value)]
forall l. IsList l => [Item l] -> l
Prelude.fromList
           ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
              [Key -> PartitionedPrefixProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"PartitionedPrefix" (PartitionedPrefixProperty -> (Key, Value))
-> Maybe PartitionedPrefixProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PartitionedPrefixProperty
partitionedPrefix,
               Key -> Object -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"SimplePrefix" (Object -> (Key, Value)) -> Maybe Object -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Object
simplePrefix]))
instance Property "PartitionedPrefix" TargetObjectKeyFormatProperty where
  type PropertyType "PartitionedPrefix" TargetObjectKeyFormatProperty = PartitionedPrefixProperty
  set :: PropertyType "PartitionedPrefix" TargetObjectKeyFormatProperty
-> TargetObjectKeyFormatProperty -> TargetObjectKeyFormatProperty
set PropertyType "PartitionedPrefix" TargetObjectKeyFormatProperty
newValue TargetObjectKeyFormatProperty {Maybe Object
Maybe PartitionedPrefixProperty
()
haddock_workaround_ :: TargetObjectKeyFormatProperty -> ()
partitionedPrefix :: TargetObjectKeyFormatProperty -> Maybe PartitionedPrefixProperty
simplePrefix :: TargetObjectKeyFormatProperty -> Maybe Object
haddock_workaround_ :: ()
partitionedPrefix :: Maybe PartitionedPrefixProperty
simplePrefix :: Maybe Object
..}
    = TargetObjectKeyFormatProperty
        {partitionedPrefix :: Maybe PartitionedPrefixProperty
partitionedPrefix = PartitionedPrefixProperty -> Maybe PartitionedPrefixProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "PartitionedPrefix" TargetObjectKeyFormatProperty
PartitionedPrefixProperty
newValue, Maybe Object
()
haddock_workaround_ :: ()
simplePrefix :: Maybe Object
haddock_workaround_ :: ()
simplePrefix :: Maybe Object
..}
instance Property "SimplePrefix" TargetObjectKeyFormatProperty where
  type PropertyType "SimplePrefix" TargetObjectKeyFormatProperty = JSON.Object
  set :: PropertyType "SimplePrefix" TargetObjectKeyFormatProperty
-> TargetObjectKeyFormatProperty -> TargetObjectKeyFormatProperty
set PropertyType "SimplePrefix" TargetObjectKeyFormatProperty
newValue TargetObjectKeyFormatProperty {Maybe Object
Maybe PartitionedPrefixProperty
()
haddock_workaround_ :: TargetObjectKeyFormatProperty -> ()
partitionedPrefix :: TargetObjectKeyFormatProperty -> Maybe PartitionedPrefixProperty
simplePrefix :: TargetObjectKeyFormatProperty -> Maybe Object
haddock_workaround_ :: ()
partitionedPrefix :: Maybe PartitionedPrefixProperty
simplePrefix :: Maybe Object
..}
    = TargetObjectKeyFormatProperty
        {simplePrefix :: Maybe Object
simplePrefix = Object -> Maybe Object
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure Object
PropertyType "SimplePrefix" TargetObjectKeyFormatProperty
newValue, Maybe PartitionedPrefixProperty
()
haddock_workaround_ :: ()
partitionedPrefix :: Maybe PartitionedPrefixProperty
haddock_workaround_ :: ()
partitionedPrefix :: Maybe PartitionedPrefixProperty
..}