From c0d3ea015a27cd78e1e23c7a027d0d1cc76b2416 Mon Sep 17 00:00:00 2001 From: yihuang Date: Fri, 5 Oct 2012 13:30:53 +0800 Subject: [PATCH] Seperate generic version of getBucketContents --- Network/Aliyun.hs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Network/Aliyun.hs b/Network/Aliyun.hs index 6f31410..df0ea85 100644 --- a/Network/Aliyun.hs +++ b/Network/Aliyun.hs @@ -5,6 +5,7 @@ , TypeFamilies , TupleSections , FlexibleContexts + , Rank2Types #-} module Network.Aliyun ( Yun(..) @@ -17,6 +18,7 @@ module Network.Aliyun , putBucket , getBucket , getBucketContents + , getBucketContentsLifted , getBucketACL , deleteBucket , putObject @@ -160,16 +162,19 @@ getBucket name qry = , maybe "" (("&delimiter="++) . T.singleton) (qryDelimiter qry) ] -getBucketContents :: MonadBase Yun m => ByteString -> BucketQuery -> C.Source m BucketContent -getBucketContents name query = loop query +getBucketContentsLifted :: Monad m => (forall a. Yun a -> m a) -> ByteString -> BucketQuery -> C.Source m BucketContent +getBucketContentsLifted liftYun name query = loop query where loop qry = do - bucket <- lift $ liftBase $ getBucket name qry + bucket <- lift $ liftYun $ getBucket name qry mapM_ (C.yield . ContentDirectory) (bucketDirectories bucket) mapM_ (C.yield . ContentFile) (bucketContents bucket) when (bucketIsTruncated bucket) $ loop qry{qryMarker=bucketNextMarker bucket} +getBucketContents :: ByteString -> BucketQuery -> C.Source Yun BucketContent +getBucketContents = getBucketContentsLifted id + getBucketACL :: ByteString -> Yun BucketACL getBucketACL name = xmlResponse =<< lbsRequest def{ hPath = S.concat ["/", name, "?acl"] }