aws 0.0.2 → 0.0.3
raw patch · 9 files changed
+76/−74 lines, 9 filesdep −asciidep ~blaze-builderdep ~containersdep ~directoryPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: ascii
Dependency ranges changed: blaze-builder, containers, directory, filepath, http-enumerator, http-types
API changes (from Hackage documentation)
- Aws.Query: SignedQuery :: Method -> Protocol -> Ascii -> Int -> Ascii -> Query -> Maybe UTCTime -> Maybe Ascii -> Maybe Ascii -> Maybe Ascii -> ByteString -> ByteString -> SignedQuery
+ Aws.Query: SignedQuery :: Method -> Protocol -> ByteString -> Int -> ByteString -> Query -> Maybe UTCTime -> Maybe ByteString -> Maybe ByteString -> Maybe ByteString -> ByteString -> ByteString -> SignedQuery
- Aws.Query: sqAuthorization :: SignedQuery -> Maybe Ascii
+ Aws.Query: sqAuthorization :: SignedQuery -> Maybe ByteString
- Aws.Query: sqContentMd5 :: SignedQuery -> Maybe Ascii
+ Aws.Query: sqContentMd5 :: SignedQuery -> Maybe ByteString
- Aws.Query: sqContentType :: SignedQuery -> Maybe Ascii
+ Aws.Query: sqContentType :: SignedQuery -> Maybe ByteString
- Aws.Query: sqHost :: SignedQuery -> Ascii
+ Aws.Query: sqHost :: SignedQuery -> ByteString
- Aws.Query: sqPath :: SignedQuery -> Ascii
+ Aws.Query: sqPath :: SignedQuery -> ByteString
- Aws.S3.Info: Endpoint :: Ascii -> LocationConstraint -> [LocationConstraint] -> Endpoint
+ Aws.S3.Info: Endpoint :: ByteString -> LocationConstraint -> [LocationConstraint] -> Endpoint
- Aws.S3.Info: endpointHost :: Endpoint -> Ascii
+ Aws.S3.Info: endpointHost :: Endpoint -> ByteString
- Aws.S3.Query: S3Query :: Maybe Ascii -> Query -> Query -> S3Query
+ Aws.S3.Query: S3Query :: Maybe ByteString -> Query -> Query -> S3Query
- Aws.S3.Query: s3QBucket :: S3Query -> Maybe Ascii
+ Aws.S3.Query: s3QBucket :: S3Query -> Maybe ByteString
- Aws.SimpleDb.Info: SdbInfo :: Protocol -> Method -> Ascii -> Int -> SdbInfo
+ Aws.SimpleDb.Info: SdbInfo :: Protocol -> Method -> ByteString -> Int -> SdbInfo
- Aws.SimpleDb.Info: sdbApNortheast :: Ascii
+ Aws.SimpleDb.Info: sdbApNortheast :: ByteString
- Aws.SimpleDb.Info: sdbApSoutheast :: Ascii
+ Aws.SimpleDb.Info: sdbApSoutheast :: ByteString
- Aws.SimpleDb.Info: sdbEuWest :: Ascii
+ Aws.SimpleDb.Info: sdbEuWest :: ByteString
- Aws.SimpleDb.Info: sdbHttpGet :: Ascii -> SdbInfo
+ Aws.SimpleDb.Info: sdbHttpGet :: ByteString -> SdbInfo
- Aws.SimpleDb.Info: sdbHttpPost :: Ascii -> SdbInfo
+ Aws.SimpleDb.Info: sdbHttpPost :: ByteString -> SdbInfo
- Aws.SimpleDb.Info: sdbHttpsGet :: Ascii -> SdbInfo
+ Aws.SimpleDb.Info: sdbHttpsGet :: ByteString -> SdbInfo
- Aws.SimpleDb.Info: sdbHttpsPost :: Ascii -> SdbInfo
+ Aws.SimpleDb.Info: sdbHttpsPost :: ByteString -> SdbInfo
- Aws.SimpleDb.Info: sdbUsEast :: Ascii
+ Aws.SimpleDb.Info: sdbUsEast :: ByteString
- Aws.SimpleDb.Info: sdbUsWest :: Ascii
+ Aws.SimpleDb.Info: sdbUsWest :: ByteString
- Aws.SimpleDb.Info: sdbiHost :: SdbInfo -> Ascii
+ Aws.SimpleDb.Info: sdbiHost :: SdbInfo -> ByteString
- Aws.Util: fmtAmzTime :: UTCTime -> Ascii
+ Aws.Util: fmtAmzTime :: UTCTime -> ByteString
- Aws.Util: fmtRfc822Time :: UTCTime -> Ascii
+ Aws.Util: fmtRfc822Time :: UTCTime -> ByteString
- Aws.Util: fmtTime :: String -> UTCTime -> Ascii
+ Aws.Util: fmtTime :: String -> UTCTime -> ByteString
- Aws.Util: fmtTimeEpochSeconds :: UTCTime -> Ascii
+ Aws.Util: fmtTimeEpochSeconds :: UTCTime -> ByteString
Files
- Aws/Query.hs +9/−10
- Aws/S3/Commands/GetBucket.hs +1/−2
- Aws/S3/Info.hs +2/−2
- Aws/S3/Query.hs +21/−22
- Aws/S3/Response.hs +2/−2
- Aws/SimpleDb/Info.hs +11/−11
- Aws/SimpleDb/Query.hs +14/−8
- Aws/Util.hs +9/−9
- aws.cabal +7/−8
Aws/Query.hs view
@@ -7,7 +7,6 @@ import Data.Maybe import Data.Time import qualified Blaze.ByteString.Builder as Blaze-import qualified Data.Ascii as A import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as L import qualified Data.ByteString.UTF8 as BU@@ -18,14 +17,14 @@ = SignedQuery { sqMethod :: Method , sqProtocol :: Protocol- , sqHost :: A.Ascii+ , sqHost :: B.ByteString , sqPort :: Int- , sqPath :: A.Ascii+ , sqPath :: B.ByteString , sqQuery :: HTTP.Query , sqDate :: Maybe UTCTime- , sqAuthorization :: Maybe A.Ascii- , sqContentType :: Maybe A.Ascii- , sqContentMd5 :: Maybe A.Ascii+ , sqAuthorization :: Maybe B.ByteString+ , sqContentType :: Maybe B.ByteString+ , sqContentMd5 :: Maybe B.ByteString , sqBody :: L.ByteString , sqStringToSign :: B.ByteString }@@ -49,7 +48,7 @@ , fmap (\auth -> ("Authorization", auth)) sqAuthorization] , HTTP.requestBody = HTTP.RequestBodyLBS $ case sqMethod of Get -> L.empty- PostQuery -> Blaze.toLazyByteString . A.toBuilder $ HTTP.renderQueryBuilder False sqQuery+ PostQuery -> Blaze.toLazyByteString $ HTTP.renderQueryBuilder False sqQuery } where contentType = case sqMethod of PostQuery -> Just "application/x-www-form-urlencoded; charset=utf-8"@@ -61,8 +60,8 @@ case sqProtocol of HTTP -> "http://" HTTPS -> "https://"- , A.toByteString sqHost+ , sqHost , if sqPort == defaultPort sqProtocol then "" else BU.fromString $ ':' : show sqPort- , A.toByteString sqPath- , A.toByteString $ HTTP.renderQuery True sqQuery+ , sqPath+ , HTTP.renderQuery True sqQuery ]
Aws/S3/Commands/GetBucket.hs view
@@ -10,7 +10,6 @@ import Control.Arrow (second) import Data.ByteString.Char8 ({- IsString -}) import Data.Maybe-import qualified Data.Ascii as A import qualified Data.ByteString.UTF8 as BU import qualified Network.HTTP.Types as HTTP @@ -49,7 +48,7 @@ instance SignQuery GetBucket where type Info GetBucket = S3Info signQuery GetBucket {..} = s3SignQuery S3Query { - s3QBucket = Just $ A.unsafeFromString gbBucket+ s3QBucket = Just $ BU.fromString gbBucket , s3QSubresources = [] , s3QQuery = HTTP.simpleQueryToQuery $ map (second BU.fromString) $ catMaybes [ ("delimiter",) <$> gbDelimiter
Aws/S3/Info.hs view
@@ -5,7 +5,7 @@ import Aws.Http import Aws.S3.Model import Data.Time-import qualified Data.Ascii as A+import qualified Data.ByteString as B data S3Authorization = S3AuthorizationHeader @@ -14,7 +14,7 @@ data Endpoint = Endpoint {- endpointHost :: A.Ascii+ endpointHost :: B.ByteString , endpointDefaultLocationConstraint :: LocationConstraint , endpointAllowedLocationConstraints :: [LocationConstraint] }
Aws/S3/Query.hs view
@@ -9,19 +9,19 @@ import Aws.S3.Info import Aws.Signature import Aws.Util-import Control.Applicative import Data.List import Data.Maybe import Data.Monoid import Data.Time-import qualified Data.Ascii as A-import qualified Data.ByteString as B-import qualified Data.ByteString.Lazy as L-import qualified Network.HTTP.Types as HTTP+import qualified Blaze.ByteString.Builder as Blaze+import qualified Blaze.ByteString.Builder.Char8 as Blaze8+import qualified Data.ByteString as B+import qualified Data.ByteString.Lazy as L+import qualified Network.HTTP.Types as HTTP data S3Query = S3Query {- s3QBucket :: Maybe A.Ascii+ s3QBucket :: Maybe B.ByteString , s3QSubresources :: HTTP.Query , s3QQuery :: HTTP.Query }@@ -49,30 +49,29 @@ contentType = Nothing path = mconcat . catMaybes $ [Just "/", s3QBucket] sortedSubresources = sort s3QSubresources- canonicalizedResource = A.fromAsciiBuilder . mconcat . catMaybes $- [ Just $ A.toAsciiBuilder "/"- , A.toAsciiBuilder <$> s3QBucket- , Just $ HTTP.renderQueryBuilder True sortedSubresources- ]+ canonicalizedResource = Blaze.copyByteString "/" `mappend`+ maybe mempty Blaze.copyByteString s3QBucket `mappend`+ HTTP.renderQueryBuilder True sortedSubresources ti = case (s3UseUri, signatureTimeInfo) of (False, ti') -> ti' (True, AbsoluteTimestamp time) -> AbsoluteExpires $ s3DefaultExpiry `addUTCTime` time (True, AbsoluteExpires time) -> AbsoluteExpires time sig = signature signatureCredentials HmacSHA1 stringToSign- stringToSign = B.intercalate "\n" $ concat [[A.toByteString $ httpMethod method]- , [fromMaybe "" contentMd5]- , [fromMaybe "" contentType]- , [A.toByteString $ case ti of- AbsoluteTimestamp time -> fmtRfc822Time time- AbsoluteExpires time -> fmtTimeEpochSeconds time]- , [] -- canonicalized AMZ headers- , [A.toByteString canonicalizedResource]]+ stringToSign = Blaze.toByteString . mconcat . intersperse (Blaze8.fromChar '\n') . concat $+ [[Blaze.copyByteString $ httpMethod method]+ , [maybe mempty Blaze.copyByteString contentMd5]+ , [maybe mempty Blaze.copyByteString contentType]+ , [Blaze.copyByteString $ case ti of+ AbsoluteTimestamp time -> fmtRfc822Time time+ AbsoluteExpires time -> fmtTimeEpochSeconds time]+ , [] -- canonicalized AMZ headers+ , [canonicalizedResource]+ ] (authorization, authQuery) = case ti of- AbsoluteTimestamp _ -> (Just $ A.unsafeFromByteString $ - B.concat ["AWS ", accessKeyID signatureCredentials, ":", sig], [])+ AbsoluteTimestamp _ -> (Just $ B.concat ["AWS ", accessKeyID signatureCredentials, ":", sig], []) AbsoluteExpires time -> (Nothing, HTTP.simpleQueryToQuery $ makeAuthQuery time) makeAuthQuery time- = [("Expires", A.toByteString $ fmtTimeEpochSeconds time)+ = [("Expires", fmtTimeEpochSeconds time) , ("AWSAccessKeyId", accessKeyID signatureCredentials) , ("SignatureMethod", "HmacSHA256") , ("Signature", sig)]
Aws/S3/Response.hs view
@@ -13,8 +13,8 @@ import Data.Maybe import Data.Word import Text.XML.Monad-import qualified Data.Ascii as A import qualified Data.ByteString as B+import qualified Data.ByteString.Char8 as B8 import qualified Data.Enumerator as En import qualified Network.HTTP.Enumerator as HTTPE import qualified Network.HTTP.Types as HTTP@@ -30,7 +30,7 @@ instance (S3ResponseIteratee a) => ResponseIteratee (S3Response a) where responseIteratee status headers = do- let headerString = fromMaybe "" . fmap A.toString . flip lookup headers+ let headerString = fromMaybe "" . fmap B8.unpack . flip lookup headers let amzId2 = headerString "x-amz-id-2" let requestId = headerString "x-amz-request-id"
Aws/SimpleDb/Info.hs view
@@ -3,40 +3,40 @@ where import Aws.Http-import qualified Data.Ascii as A+import qualified Data.ByteString as B data SdbInfo = SdbInfo { sdbiProtocol :: Protocol , sdbiHttpMethod :: Method- , sdbiHost :: A.Ascii+ , sdbiHost :: B.ByteString , sdbiPort :: Int } deriving (Show) -sdbUsEast :: A.Ascii+sdbUsEast :: B.ByteString sdbUsEast = "sdb.amazonaws.com" -sdbUsWest :: A.Ascii+sdbUsWest :: B.ByteString sdbUsWest = "sdb.us-west-1.amazonaws.com" -sdbEuWest :: A.Ascii+sdbEuWest :: B.ByteString sdbEuWest = "sdb.eu-west-1.amazonaws.com" -sdbApSoutheast :: A.Ascii+sdbApSoutheast :: B.ByteString sdbApSoutheast = "sdb.ap-southeast-1.amazonaws.com" -sdbApNortheast :: A.Ascii+sdbApNortheast :: B.ByteString sdbApNortheast = "sdb.ap-northeast-1.amazonaws.com" -sdbHttpGet :: A.Ascii -> SdbInfo+sdbHttpGet :: B.ByteString -> SdbInfo sdbHttpGet endpoint = SdbInfo HTTP Get endpoint (defaultPort HTTP) -sdbHttpPost :: A.Ascii -> SdbInfo+sdbHttpPost :: B.ByteString -> SdbInfo sdbHttpPost endpoint = SdbInfo HTTP PostQuery endpoint (defaultPort HTTP) -sdbHttpsGet :: A.Ascii -> SdbInfo+sdbHttpsGet :: B.ByteString -> SdbInfo sdbHttpsGet endpoint = SdbInfo HTTPS Get endpoint (defaultPort HTTPS) -sdbHttpsPost :: A.Ascii -> SdbInfo+sdbHttpsPost :: B.ByteString -> SdbInfo sdbHttpsPost endpoint = SdbInfo HTTPS PostQuery endpoint (defaultPort HTTPS)
Aws/SimpleDb/Query.hs view
@@ -9,10 +9,12 @@ import Aws.SimpleDb.Info import Aws.Util import Data.List-import qualified Data.Ascii as A-import qualified Data.ByteString as B-import qualified Data.ByteString.Lazy as L-import qualified Network.HTTP.Types as HTTP+import Data.Monoid+import qualified Blaze.ByteString.Builder as Blaze+import qualified Blaze.ByteString.Builder.Char8 as Blaze8+import qualified Data.ByteString as B+import qualified Data.ByteString.Lazy as L+import qualified Network.HTTP.Types as HTTP sdbSignQuery :: [(B.ByteString, B.ByteString)] -> SdbInfo -> SignatureData -> SignedQuery sdbSignQuery q si sd@@ -36,8 +38,8 @@ ti = signatureTimeInfo sd cr = signatureCredentials sd queryAuth = [case ti of- AbsoluteTimestamp time -> ("Timestamp", A.toByteString $ fmtAmzTime time)- AbsoluteExpires time -> ("Expires", A.toByteString $ fmtAmzTime time)+ AbsoluteTimestamp time -> ("Timestamp", fmtAmzTime time)+ AbsoluteExpires time -> ("Expires", fmtAmzTime time) , ("AWSAccessKeyId", accessKeyID cr) , ("SignatureMethod", amzHash ah) , ("SignatureVersion", "2")@@ -47,5 +49,9 @@ host = sdbiHost si path = "/" sig = signature cr ah stringToSign- stringToSign = B.intercalate "\n" $ map A.toByteString- [httpMethod method, host, path, HTTP.renderQuery False q']+ stringToSign = Blaze.toByteString . mconcat $ + intersperse (Blaze8.fromChar '\n')+ [Blaze.copyByteString $ httpMethod method+ , Blaze.copyByteString $ host+ , Blaze.copyByteString $ path+ , HTTP.renderQueryBuilder False q']
Aws/Util.hs view
@@ -5,12 +5,12 @@ import Control.Arrow import Control.Exception+import Data.ByteString.Char8 ({- IsString -}) import Data.Time import System.Locale-import qualified Data.Ascii as A-import qualified Data.ByteString as B-import qualified Data.ByteString.UTF8 as BU-import qualified Data.Enumerator as En+import qualified Data.ByteString as B+import qualified Data.ByteString.UTF8 as BU+import qualified Data.Enumerator as En tryError :: (Exception e, Monad m) => En.Iteratee a m b -> En.Iteratee a m (Either e b) tryError m = En.catchError (fmap Right m) h@@ -34,14 +34,14 @@ awsFalse :: B.ByteString awsFalse = awsBool False -fmtTime :: String -> UTCTime -> A.Ascii-fmtTime s t = A.unsafeFromString $ formatTime defaultTimeLocale s t+fmtTime :: String -> UTCTime -> B.ByteString+fmtTime s t = BU.fromString $ formatTime defaultTimeLocale s t -fmtRfc822Time :: UTCTime -> A.Ascii+fmtRfc822Time :: UTCTime -> B.ByteString fmtRfc822Time = fmtTime "%a, %_d %b %Y %H:%M:%S GMT" -fmtAmzTime :: UTCTime -> A.Ascii+fmtAmzTime :: UTCTime -> B.ByteString fmtAmzTime = fmtTime "%Y-%m-%dT%H:%M:%S" -fmtTimeEpochSeconds :: UTCTime -> A.Ascii+fmtTimeEpochSeconds :: UTCTime -> B.ByteString fmtTimeEpochSeconds = fmtTime "%s"
aws.cabal view
@@ -6,7 +6,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version: 0.0.2+Version: 0.0.3 -- A short (one-line) description of the package. Synopsis: Amazon Web Services (AWS) for Haskell@@ -90,20 +90,19 @@ -- Packages needed in order to build this package. Build-depends:- ascii >=0.0.2 && <0.1, base ==4.*, base64-bytestring ==0.1.*,- blaze-builder >=0.2.1.4 && <0.3,+ blaze-builder >=0.2.1.4 && <0.4, bytestring ==0.9.*, cereal ==0.3.*,- containers ==0.3.*,+ containers >=0.3 && <0.5, crypto-api ==0.5.*, cryptohash ==0.6.*,- directory ==1.0.*,+ directory >=1.0 && <1.2, enumerator ==0.4.*,- filepath ==1.1.*,- http-enumerator >=0.4.0.1 && < 0.5,- http-types >=0.5.3 && <0.6,+ filepath >=1.1 && <1.3,+ http-enumerator >=0.5 && < 0.6,+ http-types >=0.6 && <0.7, mtl ==2.*, old-locale ==1.*, shortcircuit ==0.1.*,