module Network.AWS.S3.CreateBucket
(
CreateBucket
, createBucket
, cbACL
, cbBucket
, cbCreateBucketConfiguration
, cbGrantFullControl
, cbGrantRead
, cbGrantReadACP
, cbGrantWrite
, cbGrantWriteACP
, CreateBucketResponse
, createBucketResponse
, cbrLocation
) where
import Network.AWS.Prelude
import Network.AWS.Request.S3
import Network.AWS.S3.Types
import qualified GHC.Exts
data CreateBucket = CreateBucket
{ _cbACL :: Maybe BucketCannedACL
, _cbBucket :: Text
, _cbCreateBucketConfiguration :: Maybe CreateBucketConfiguration
, _cbGrantFullControl :: Maybe Text
, _cbGrantRead :: Maybe Text
, _cbGrantReadACP :: Maybe Text
, _cbGrantWrite :: Maybe Text
, _cbGrantWriteACP :: Maybe Text
} deriving (Eq, Show)
createBucket :: Text
-> CreateBucket
createBucket p1 = CreateBucket
{ _cbBucket = p1
, _cbACL = Nothing
, _cbCreateBucketConfiguration = Nothing
, _cbGrantFullControl = Nothing
, _cbGrantRead = Nothing
, _cbGrantReadACP = Nothing
, _cbGrantWrite = Nothing
, _cbGrantWriteACP = Nothing
}
cbACL :: Lens' CreateBucket (Maybe BucketCannedACL)
cbACL = lens _cbACL (\s a -> s { _cbACL = a })
cbBucket :: Lens' CreateBucket Text
cbBucket = lens _cbBucket (\s a -> s { _cbBucket = a })
cbCreateBucketConfiguration :: Lens' CreateBucket (Maybe CreateBucketConfiguration)
cbCreateBucketConfiguration =
lens _cbCreateBucketConfiguration
(\s a -> s { _cbCreateBucketConfiguration = a })
cbGrantFullControl :: Lens' CreateBucket (Maybe Text)
cbGrantFullControl =
lens _cbGrantFullControl (\s a -> s { _cbGrantFullControl = a })
cbGrantRead :: Lens' CreateBucket (Maybe Text)
cbGrantRead = lens _cbGrantRead (\s a -> s { _cbGrantRead = a })
cbGrantReadACP :: Lens' CreateBucket (Maybe Text)
cbGrantReadACP = lens _cbGrantReadACP (\s a -> s { _cbGrantReadACP = a })
cbGrantWrite :: Lens' CreateBucket (Maybe Text)
cbGrantWrite = lens _cbGrantWrite (\s a -> s { _cbGrantWrite = a })
cbGrantWriteACP :: Lens' CreateBucket (Maybe Text)
cbGrantWriteACP = lens _cbGrantWriteACP (\s a -> s { _cbGrantWriteACP = a })
newtype CreateBucketResponse = CreateBucketResponse
{ _cbrLocation :: Maybe Text
} deriving (Eq, Ord, Show, Monoid)
createBucketResponse :: CreateBucketResponse
createBucketResponse = CreateBucketResponse
{ _cbrLocation = Nothing
}
cbrLocation :: Lens' CreateBucketResponse (Maybe Text)
cbrLocation = lens _cbrLocation (\s a -> s { _cbrLocation = a })
instance ToPath CreateBucket where
toPath CreateBucket{..} = mconcat
[ "/"
, toText _cbBucket
]
instance ToQuery CreateBucket where
toQuery = const mempty
instance ToHeaders CreateBucket where
toHeaders CreateBucket{..} = mconcat
[ "x-amz-acl" =: _cbACL
, "x-amz-grant-full-control" =: _cbGrantFullControl
, "x-amz-grant-read" =: _cbGrantRead
, "x-amz-grant-read-acp" =: _cbGrantReadACP
, "x-amz-grant-write" =: _cbGrantWrite
, "x-amz-grant-write-acp" =: _cbGrantWriteACP
]
instance ToXMLRoot CreateBucket where
toXMLRoot CreateBucket{..} = namespaced ns "CreateBucket"
[ "CreateBucketConfiguration" =@ _cbCreateBucketConfiguration
]
instance ToXML CreateBucket
instance AWSRequest CreateBucket where
type Sv CreateBucket = S3
type Rs CreateBucket = CreateBucketResponse
request = put
response = headerResponse $ \h -> CreateBucketResponse
<$> h ~:? "Location"