Export ListUploadsResult and ListObjectsResult (#48)

Also take max-keys as an argument for listObjects' and max-uploads for
listIncompleteUploads'.
This commit is contained in:
Krishnan Parthasarathi 2017-06-16 17:23:52 +00:00 committed by Aditya Manthramurthy
parent e8a75a8fdb
commit 2e7984b71c
4 changed files with 13 additions and 11 deletions

View File

@ -233,7 +233,7 @@ data ObjectInfo = ObjectInfo {
} deriving (Show, Eq) } deriving (Show, Eq)
data CopyPartSource = CopyPartSource { data CopyPartSource = CopyPartSource {
cpSource :: Text -- | formatted like "/sourceBucket/sourceObject" cpSource :: Text -- | formatted like "\/sourceBucket\/sourceObject"
, cpSourceRange :: Maybe (Int64, Int64) -- | (0, 9) means first ten , cpSourceRange :: Maybe (Int64, Int64) -- | (0, 9) means first ten
-- bytes of the source -- bytes of the source
-- object -- object

View File

@ -35,7 +35,7 @@ listObjects bucket prefix recurse = loop Nothing
let let
delimiter = bool (Just "/") Nothing recurse delimiter = bool (Just "/") Nothing recurse
res <- lift $ listObjects' bucket prefix nextToken delimiter res <- lift $ listObjects' bucket prefix nextToken delimiter Nothing
CL.sourceList $ lorObjects res CL.sourceList $ lorObjects res
when (lorHasMore res) $ when (lorHasMore res) $
loop (lorNextToken res) loop (lorNextToken res)
@ -53,7 +53,7 @@ listIncompleteUploads bucket prefix recurse = loop Nothing Nothing
delimiter = bool (Just "/") Nothing recurse delimiter = bool (Just "/") Nothing recurse
res <- lift $ listIncompleteUploads' bucket prefix delimiter res <- lift $ listIncompleteUploads' bucket prefix delimiter
nextKeyMarker nextUploadIdMarker nextKeyMarker nextUploadIdMarker Nothing
aggrSizes <- lift $ forM (lurUploads res) $ \(uKey, uId, _) -> do aggrSizes <- lift $ forM (lurUploads res) $ \(uKey, uId, _) -> do
partInfos <- listIncompleteParts bucket uKey uId C.$$ CC.sinkList partInfos <- listIncompleteParts bucket uKey uId C.$$ CC.sinkList

View File

@ -25,7 +25,7 @@ module Network.Minio.S3API
-- * Listing objects -- * Listing objects
-------------------- --------------------
, ListObjectsResult , ListObjectsResult(..)
, listObjects' , listObjects'
-- * Retrieving buckets -- * Retrieving buckets
@ -54,7 +54,7 @@ module Network.Minio.S3API
, copyObjectPart , copyObjectPart
, completeMultipartUpload , completeMultipartUpload
, abortMultipartUpload , abortMultipartUpload
, ListUploadsResult , ListUploadsResult(..)
, listIncompleteUploads' , listIncompleteUploads'
, ListPartsResult(..) , ListPartsResult(..)
, listIncompleteParts' , listIncompleteParts'
@ -145,9 +145,9 @@ putObjectSingle bucket object headers h offset size = do
-- | List objects in a bucket matching prefix up to delimiter, -- | List objects in a bucket matching prefix up to delimiter,
-- starting from nextToken. -- starting from nextToken.
listObjects' :: Bucket -> Maybe Text -> Maybe Text -> Maybe Text listObjects' :: Bucket -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Int
-> Minio ListObjectsResult -> Minio ListObjectsResult
listObjects' bucket prefix nextToken delimiter = do listObjects' bucket prefix nextToken delimiter maxKeys = do
resp <- executeRequest $ def { riMethod = HT.methodGet resp <- executeRequest $ def { riMethod = HT.methodGet
, riBucket = Just bucket , riBucket = Just bucket
, riQueryParams = mkOptionalParams params , riQueryParams = mkOptionalParams params
@ -159,6 +159,7 @@ listObjects' bucket prefix nextToken delimiter = do
, ("continuation_token", nextToken) , ("continuation_token", nextToken)
, ("prefix", prefix) , ("prefix", prefix)
, ("delimiter", delimiter) , ("delimiter", delimiter)
, ("max-keys", show <$> maxKeys)
] ]
-- | DELETE a bucket from the service. -- | DELETE a bucket from the service.
@ -278,8 +279,8 @@ abortMultipartUpload bucket object uploadId = void $
-- | List incomplete multipart uploads. -- | List incomplete multipart uploads.
listIncompleteUploads' :: Bucket -> Maybe Text -> Maybe Text -> Maybe Text listIncompleteUploads' :: Bucket -> Maybe Text -> Maybe Text -> Maybe Text
-> Maybe Text -> Minio ListUploadsResult -> Maybe Text -> Maybe Int -> Minio ListUploadsResult
listIncompleteUploads' bucket prefix delimiter keyMarker uploadIdMarker = do listIncompleteUploads' bucket prefix delimiter keyMarker uploadIdMarker maxKeys = do
resp <- executeRequest $ def { riMethod = HT.methodGet resp <- executeRequest $ def { riMethod = HT.methodGet
, riBucket = Just bucket , riBucket = Just bucket
, riQueryParams = params , riQueryParams = params
@ -292,6 +293,7 @@ listIncompleteUploads' bucket prefix delimiter keyMarker uploadIdMarker = do
, ("delimiter", delimiter) , ("delimiter", delimiter)
, ("key-marker", keyMarker) , ("key-marker", keyMarker)
, ("upload-id-marker", uploadIdMarker) , ("upload-id-marker", uploadIdMarker)
, ("max-uploads", show <$> maxKeys)
] ]

View File

@ -241,7 +241,7 @@ liveServerUnitTests = testGroup "Unit tests against a live server"
fPutObject bucket (T.concat ["lsb-release", T.pack (show s)]) "/etc/lsb-release" fPutObject bucket (T.concat ["lsb-release", T.pack (show s)]) "/etc/lsb-release"
step "Simple list" step "Simple list"
res <- listObjects' bucket Nothing Nothing Nothing res <- listObjects' bucket Nothing Nothing Nothing Nothing
let expected = sort $ map (T.concat . let expected = sort $ map (T.concat .
("lsb-release":) . ("lsb-release":) .
(\x -> [x]) . (\x -> [x]) .
@ -262,7 +262,7 @@ liveServerUnitTests = testGroup "Unit tests against a live server"
step "list incomplete multipart uploads" step "list incomplete multipart uploads"
incompleteUploads <- listIncompleteUploads' bucket Nothing Nothing incompleteUploads <- listIncompleteUploads' bucket Nothing Nothing
Nothing Nothing Nothing Nothing Nothing
liftIO $ (length $ lurUploads incompleteUploads) @?= 10 liftIO $ (length $ lurUploads incompleteUploads) @?= 10
step "cleanup" step "cleanup"