aws 0.9 → 0.9.1
raw patch · 5 files changed
+40/−5 lines, 5 filesdep ~transformersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: transformers
API changes (from Hackage documentation)
+ Aws.Core: instance Monoid m => Applicative (Response m)
+ Aws.S3.Commands.GetBucket: gbrNextMarker :: GetBucketResponse -> Maybe Text
+ Aws.S3.Commands.GetBucket: instance IteratedTransaction GetBucket GetBucketResponse
+ Aws.S3.Core: Glacier :: StorageClass
- Aws.S3.Commands.GetBucket: GetBucketResponse :: Bucket -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Text -> [ObjectInfo] -> [Text] -> Bool -> GetBucketResponse
+ Aws.S3.Commands.GetBucket: GetBucketResponse :: Bucket -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Text -> [ObjectInfo] -> [Text] -> Bool -> Maybe Text -> GetBucketResponse
Files
- Aws/Core.hs +7/−1
- Aws/S3/Commands/GetBucket.hs +10/−0
- Aws/S3/Core.hs +6/−1
- README.org +14/−0
- aws.cabal +3/−3
Aws/Core.hs view
@@ -155,11 +155,15 @@ --multiResponse :: Monoid m => Response m a -> Response [m] a -> +instance Monoid m => Applicative (Response m) where+ pure x = Response mempty (Right x)+ (<*>) = ap+ instance Monoid m => Monad (Response m) where return x = Response mempty (Right x) Response m1 (Left e) >>= _ = Response m1 (Left e) Response m1 (Right x) >>= f = let Response m2 y = f x- in Response (m1 `mappend` m2) y -- currently using First-semantics, Last SHOULD work too+ in Response (m1 `mappend` m2) y -- currently using First-semantics, Last SHOULD work too instance Monoid m => MonadThrow (Response m) where throwM e = Response mempty (throwM e)@@ -636,6 +640,8 @@ parseHttpDate s = p "%a, %d %b %Y %H:%M:%S GMT" s -- rfc1123-date <|> p "%A, %d-%b-%y %H:%M:%S GMT" s -- rfc850-date <|> p "%a %b %_d %H:%M:%S %Y" s -- asctime-date+ <|> p "%Y-%m-%dT%H:%M:%S%QZ" s -- iso 8601+ <|> p "%Y-%m-%dT%H:%M:%S%Q%Z" s -- iso 8601 where p = parseTime defaultTimeLocale -- | HTTP-date (section 3.3.1 of RFC 2616, first type - RFC1123-style)
Aws/S3/Commands/GetBucket.hs view
@@ -44,6 +44,7 @@ , gbrContents :: [ObjectInfo] , gbrCommonPrefixes :: [T.Text] , gbrIsTruncated :: Bool+ , gbrNextMarker :: Maybe T.Text } deriving (Show) @@ -78,6 +79,7 @@ let marker = listToMaybe $ cursor $/ elContent "Marker" maxKeys <- Data.Traversable.sequence . listToMaybe $ cursor $/ elContent "MaxKeys" &| textReadInt let truncated = maybe True (/= "false") $ listToMaybe $ cursor $/ elContent "IsTruncated"+ let nextMarker = listToMaybe $ cursor $/ elContent "NextMarker" let prefix = listToMaybe $ cursor $/ elContent "Prefix" contents <- sequence $ cursor $/ Cu.laxElement "Contents" &| parseObjectInfo let commonPrefixes = cursor $/ Cu.laxElement "CommonPrefixes" &// Cu.content@@ -90,9 +92,17 @@ , gbrContents = contents , gbrCommonPrefixes = commonPrefixes , gbrIsTruncated = truncated+ , gbrNextMarker = nextMarker } instance Transaction GetBucket GetBucketResponse++instance IteratedTransaction GetBucket GetBucketResponse where+ nextIteratedRequest request response+ = case (gbrIsTruncated response, gbrNextMarker response, gbrContents response) of+ (True, Just marker, _ ) -> Just $ request { gbMarker = Just marker }+ (True, Nothing, contents@(_:_)) -> Just $ request { gbMarker = Just $ objectKey $ last contents }+ (_, _, _ ) -> Nothing instance AsMemoryResponse GetBucketResponse where type MemoryResponse GetBucketResponse = GetBucketResponse
Aws/S3/Core.hs view
@@ -14,6 +14,7 @@ import Data.List import Data.Maybe import Data.Monoid+import Control.Applicative ((<|>)) import Data.Time import Data.Typeable import System.Locale@@ -304,16 +305,19 @@ data StorageClass = Standard | ReducedRedundancy+ | Glacier deriving (Show) parseStorageClass :: MonadThrow m => T.Text -> m StorageClass parseStorageClass "STANDARD" = return Standard parseStorageClass "REDUCED_REDUNDANCY" = return ReducedRedundancy+parseStorageClass "GLACIER" = return Glacier parseStorageClass s = throwM . XmlException $ "Invalid Storage Class: " ++ T.unpack s writeStorageClass :: StorageClass -> T.Text writeStorageClass Standard = "STANDARD" writeStorageClass ReducedRedundancy = "REDUCED_REDUNDANCY"+writeStorageClass Glacier = "GLACIER" data ServerSideEncryption = AES256@@ -359,7 +363,8 @@ parseObjectInfo :: MonadThrow m => Cu.Cursor -> m ObjectInfo parseObjectInfo el = do key <- force "Missing object Key" $ el $/ elContent "Key"- let time s = case parseTime defaultTimeLocale "%Y-%m-%dT%H:%M:%S%QZ" $ T.unpack s of+ let time s = case (parseTime defaultTimeLocale "%Y-%m-%dT%H:%M:%S%QZ" $ T.unpack s) <|>+ (parseTime defaultTimeLocale "%Y-%m-%dT%H:%M:%S%Q%Z" $ T.unpack s) of Nothing -> throwM $ XmlException "Invalid time" Just v -> return v lastModified <- forceM "Missing object LastModified" $ el $/ elContent "LastModified" &| time
README.org view
@@ -88,6 +88,20 @@ * Release Notes +** 0.9 series++- 0.9.1+ - Support for multi-page S3 GetBucket requests+ - S3 GLACIER support+ - Applicative instance for Response to conform to the Applicative-Monad Proposal+ - Compatibility with transformers 0.4++- 0.9+ - Interface changes:+ - attempt and failure were deprecated, remove+ - switch to new cryptohash interface+ - updated version bounds of conduit and xml-conduit+ ** 0.8 series - 0.8.6
aws.cabal view
@@ -1,5 +1,5 @@ Name: aws-Version: 0.9+Version: 0.9.1 Synopsis: Amazon Web Services (AWS) for Haskell Description: Bindings for Amazon Web Services (AWS), with the aim of supporting all AWS services. To see a high level overview of the library, see the README at <https://github.com/aristidb/aws/blob/master/README.org>. Homepage: http://github.com/aristidb/aws@@ -20,7 +20,7 @@ Source-repository this type: git location: https://github.com/aristidb/aws.git- tag: 0.9+ tag: 0.9.1 Source-repository head type: git@@ -123,7 +123,7 @@ resourcet >= 1.1 && < 1.2, text >= 0.11, time >= 1.1.4 && < 1.5,- transformers >= 0.2.2.0 && < 0.4,+ transformers >= 0.2.2 && < 0.5, unordered-containers >= 0.2, utf8-string == 0.3.*, vector >= 0.10,