42 lines
1.4 KiB
Haskell
42 lines
1.4 KiB
Haskell
module Network.Minio.XmlGenerator
|
|
( mkCreateBucketConfig
|
|
, mkCompleteMultipartUploadRequest
|
|
) where
|
|
|
|
|
|
import qualified Data.ByteString.Lazy as LBS
|
|
import qualified Data.Map as M
|
|
import qualified Data.Text as T
|
|
import Text.XML
|
|
|
|
import Lib.Prelude
|
|
|
|
import Network.Minio.Data
|
|
|
|
|
|
-- | Create a bucketConfig request body XML
|
|
mkCreateBucketConfig :: Region -> ByteString
|
|
mkCreateBucketConfig location = LBS.toStrict $ renderLBS def bucketConfig
|
|
where
|
|
s3Element n = Element (s3Name n) M.empty
|
|
root = s3Element "CreateBucketConfiguration"
|
|
[ NodeElement $ s3Element "LocationConstraint"
|
|
[ NodeContent location]
|
|
]
|
|
bucketConfig = Document (Prologue [] Nothing []) root []
|
|
|
|
-- | Create a completeMultipartUpload request body XML
|
|
mkCompleteMultipartUploadRequest :: [PartInfo] -> ByteString
|
|
mkCompleteMultipartUploadRequest partInfo =
|
|
LBS.toStrict $ renderLBS def cmur
|
|
where
|
|
root = Element "CompleteMultipartUpload" M.empty $
|
|
map (NodeElement . mkPart) partInfo
|
|
mkPart (PartInfo n etag) = Element "Part" M.empty
|
|
[ NodeElement $ Element "PartNumber" M.empty
|
|
[NodeContent $ T.pack $ show n]
|
|
, NodeElement $ Element "ETag" M.empty
|
|
[NodeContent etag]
|
|
]
|
|
cmur = Document (Prologue [] Nothing []) root []
|