packages feed

aws 0.14.1 → 0.15

raw patch · 65 files changed

+265/−130 lines, 65 filesdep ~basedep ~conduitdep ~conduit-extranew-component:exe:GetObjectGooglePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, conduit, conduit-extra, directory, http-conduit, time

API changes (from Hackage documentation)

- Aws.Core: instance (GHC.Show.Show m, GHC.Show.Show a) => GHC.Show.Show (Aws.Core.Response m a)
+ Aws.Core: instance (GHC.Show.Show a, GHC.Show.Show m) => GHC.Show.Show (Aws.Core.Response m a)
+ Aws.Core: throwStatusCodeException :: Request -> Response (ResumableSource (ResourceT IO) ByteString) -> ResourceT IO a
- Aws: unsafeAws :: (ResponseConsumer r a, Monoid (ResponseMetadata a), Loggable (ResponseMetadata a), SignQuery r) => Configuration -> ServiceConfiguration r NormalQuery -> Manager -> r -> ResourceT IO (Response (ResponseMetadata a) a)
+ Aws: unsafeAws :: (ResponseConsumer r a, Loggable (ResponseMetadata a), SignQuery r) => Configuration -> ServiceConfiguration r NormalQuery -> Manager -> r -> ResourceT IO (Response (ResponseMetadata a) a)
- Aws: unsafeAwsRef :: (ResponseConsumer r a, Monoid (ResponseMetadata a), SignQuery r) => Configuration -> ServiceConfiguration r NormalQuery -> Manager -> IORef (ResponseMetadata a) -> r -> ResourceT IO a
+ Aws: unsafeAwsRef :: (ResponseConsumer r a, SignQuery r) => Configuration -> ServiceConfiguration r NormalQuery -> Manager -> IORef (ResponseMetadata a) -> r -> ResourceT IO a
- Aws.Aws: unsafeAws :: (ResponseConsumer r a, Monoid (ResponseMetadata a), Loggable (ResponseMetadata a), SignQuery r) => Configuration -> ServiceConfiguration r NormalQuery -> Manager -> r -> ResourceT IO (Response (ResponseMetadata a) a)
+ Aws.Aws: unsafeAws :: (ResponseConsumer r a, Loggable (ResponseMetadata a), SignQuery r) => Configuration -> ServiceConfiguration r NormalQuery -> Manager -> r -> ResourceT IO (Response (ResponseMetadata a) a)
- Aws.Aws: unsafeAwsRef :: (ResponseConsumer r a, Monoid (ResponseMetadata a), SignQuery r) => Configuration -> ServiceConfiguration r NormalQuery -> Manager -> IORef (ResponseMetadata a) -> r -> ResourceT IO a
+ Aws.Aws: unsafeAwsRef :: (ResponseConsumer r a, SignQuery r) => Configuration -> ServiceConfiguration r NormalQuery -> Manager -> IORef (ResponseMetadata a) -> r -> ResourceT IO a
- Aws.Core: responseConsumer :: ResponseConsumer req resp => req -> IORef (ResponseMetadata resp) -> HTTPResponseConsumer resp
+ Aws.Core: responseConsumer :: ResponseConsumer req resp => Request -> req -> IORef (ResponseMetadata resp) -> HTTPResponseConsumer resp
- Aws.DynamoDb.Core: getAttr' :: forall a. (Typeable a, DynVal a) => Text -> Item -> Parser (Maybe a)
+ Aws.DynamoDb.Core: getAttr' :: forall a. (DynVal a) => Text -> Item -> Parser (Maybe a)

Files

Aws/Aws.hs view
@@ -52,6 +52,7 @@ import qualified Data.Text.IO                 as T import qualified Network.HTTP.Conduit         as HTTP import           System.IO                    (stderr)+import           Prelude  -- | The severity of a log message, in rising order. data LogLevel@@ -189,9 +190,9 @@             -> ServiceConfiguration r NormalQuery             -> r             -> io (MemoryResponse a)-simpleAws cfg scfg request-  = liftIO $ HTTP.withManager $ \manager ->-      loadToMemory =<< readResponseIO =<< aws cfg scfg manager request+simpleAws cfg scfg request = liftIO $ runResourceT $ do+    manager <- liftIO $ HTTP.newManager HTTP.tlsManagerSettings+    loadToMemory =<< readResponseIO =<< aws cfg scfg manager request  -- | Run an AWS transaction, without enforcing that response and request type form a valid transaction pair. --@@ -202,7 +203,6 @@ -- Metadata is wrapped in the Response, and also logged at level 'Info'. unsafeAws   :: (ResponseConsumer r a,-      Monoid (ResponseMetadata a),       Loggable (ResponseMetadata a),       SignQuery r) =>      Configuration -> ServiceConfiguration r NormalQuery -> HTTP.Manager -> r -> ResourceT IO (Response (ResponseMetadata a) a)@@ -227,7 +227,6 @@ -- Metadata is put in the 'IORef', but not logged. unsafeAwsRef   :: (ResponseConsumer r a,-      Monoid (ResponseMetadata a),       SignQuery r) =>      Configuration -> ServiceConfiguration r NormalQuery -> HTTP.Manager -> IORef (ResponseMetadata a) -> r -> ResourceT IO a unsafeAwsRef cfg info manager metadataRef request = do@@ -247,7 +246,7 @@   logDebug $ "Response status: " ++ show (HTTP.responseStatus hresp)   forM_ (HTTP.responseHeaders hresp) $ \(hname,hvalue) -> liftIO $     logger cfg Debug $ T.decodeUtf8 $ "Response header '" `mappend` CI.original hname `mappend` "': '" `mappend` hvalue `mappend` "'"-  {-# SCC "unsafeAwsRef:responseConsumer" #-} responseConsumer request metadataRef hresp+  {-# SCC "unsafeAwsRef:responseConsumer" #-} responseConsumer httpRequest request metadataRef hresp  -- | Run a URI-only AWS transaction. Returns a URI that can be sent anywhere. Does not work with all requests. --
Aws/Core.hs view
@@ -22,6 +22,7 @@ , HeaderException(..) , FormException(..) , NoCredentialsException(..)+, throwStatusCodeException   -- ** Response deconstruction helpers , readHex2   -- *** XML@@ -111,8 +112,10 @@ import           Data.Char import           Data.Conduit             (($$+-)) import qualified Data.Conduit             as C+#if MIN_VERSION_http_conduit(2,2,0)+import qualified Data.Conduit.Binary      as CB+#endif import qualified Data.Conduit.List        as CL-import           Data.Default             (def) import           Data.IORef import           Data.List import qualified Data.Map                 as M@@ -130,14 +133,13 @@ import           System.Directory import           System.Environment import           System.FilePath          ((</>))-#if MIN_VERSION_time(1,5,0)-import           Data.Time.Format-#else+#if !MIN_VERSION_time(1,5,0) import           System.Locale #endif import qualified Text.XML                 as XML import qualified Text.XML.Cursor          as Cu import           Text.XML.Cursor          hiding (force, forceM)+import           Prelude -------------------------------------------------------------------------------  -- | Types that can be logged (textually).@@ -201,14 +203,15 @@     -- metadata type for each AWS service.     type ResponseMetadata resp -    -- | Response parser. Takes the corresponding request, an 'IORef'-    -- for metadata, and HTTP response data.-    responseConsumer :: req -> IORef (ResponseMetadata resp) -> HTTPResponseConsumer resp+    -- | Response parser. Takes the corresponding AWS request, the derived+    -- @http-client@ request (for error reporting), an 'IORef' for metadata, and+    -- HTTP response data.+    responseConsumer :: HTTP.Request -> req -> IORef (ResponseMetadata resp) -> HTTPResponseConsumer resp  -- | Does not parse response. For debugging. instance ResponseConsumer r (HTTP.Response L.ByteString) where     type ResponseMetadata (HTTP.Response L.ByteString) = ()-    responseConsumer _ _ resp = do+    responseConsumer _ _ _ resp = do         bss <- HTTP.responseBody resp $$+- CL.consume         return resp             { HTTP.responseBody = L.fromChunks bss@@ -317,8 +320,8 @@   Traversable.sequence $ makeCredentials' <$> keyID <*> secret  loadCredentialsFromInstanceMetadata :: MonadIO io => io (Maybe Credentials)-loadCredentialsFromInstanceMetadata = liftIO $ HTTP.withManager $ \mgr ->-  do+loadCredentialsFromInstanceMetadata = do+    mgr <- liftIO $ HTTP.newManager HTTP.tlsManagerSettings     -- check if the path is routable     avail <- liftIO $ hostAvailable "169.254.169.254"     if not avail@@ -462,7 +465,7 @@ #endif queryToHttpRequest SignedQuery{..} =  do     mauth <- maybe (return Nothing) (Just<$>) sqAuthorization-    return $ def {+    return $ HTTP.defaultRequest {         HTTP.method = httpMethod sqMethod       , HTTP.secure = case sqProtocol of                         HTTP -> False@@ -494,7 +497,11 @@               _         -> HTTP.RequestBodyBuilder 0 mempty        , HTTP.decompress = HTTP.alwaysDecompress-      , HTTP.checkStatus = \_ _ _ -> Nothing+#if MIN_VERSION_http_conduit(2,2,0)+      , HTTP.checkResponse = \_ _ -> return ()+#else+      , HTTP.checkStatus = \_ _ _-> Nothing+#endif        , HTTP.redirectCount = 10       }@@ -720,7 +727,7 @@ fmtTime s t = BU.fromString $ formatTime defaultTimeLocale s t  rfc822Time :: String-rfc822Time = "%a, %_d %b %Y %H:%M:%S GMT"+rfc822Time = "%a, %0d %b %Y %H:%M:%S GMT"  -- | Format time in RFC 822 format. fmtRfc822Time :: UTCTime -> B.ByteString@@ -792,6 +799,24 @@  instance E.Exception NoCredentialsException +-- | A helper to throw an 'HTTP.StatusCodeException'.+throwStatusCodeException :: HTTP.Request+                         -> HTTP.Response (C.ResumableSource (ResourceT IO) ByteString)+                         -> ResourceT IO a+#if MIN_VERSION_http_conduit(2,2,0)+throwStatusCodeException req resp = do+    let resp' = fmap (const ()) resp+    -- only take first 10kB of error response+    body <- HTTP.responseBody resp C.$$+- CB.take (10*1024)+    let sce = HTTP.StatusCodeException resp' (L.toStrict body)+    throwM $ HTTP.HttpExceptionRequest req sce+#else+throwStatusCodeException _req resp = do+    let cookies = HTTP.responseCookieJar resp+        headers = HTTP.responseHeaders   resp+        status  = HTTP.responseStatus    resp+    throwM $ HTTP.StatusCodeException status headers cookies+#endif  -- | A specific element (case-insensitive, ignoring namespace - sadly necessary), extracting only the textual contents. elContent :: T.Text -> Cursor -> [T.Text]
Aws/DynamoDb/Commands/DeleteItem.hs view
@@ -26,6 +26,7 @@ import           Data.Aeson import           Data.Default import qualified Data.Text           as T+import           Prelude ------------------------------------------------------------------------------- import           Aws.Core import           Aws.DynamoDb.Core@@ -97,7 +98,7 @@  instance ResponseConsumer r DeleteItemResponse where     type ResponseMetadata DeleteItemResponse = DdbResponse-    responseConsumer _ ref resp = ddbResponseConsumer ref resp+    responseConsumer _ _ ref resp = ddbResponseConsumer ref resp   instance AsMemoryResponse DeleteItemResponse where
Aws/DynamoDb/Commands/GetItem.hs view
@@ -19,6 +19,7 @@ import           Data.Aeson import           Data.Default import qualified Data.Text           as T+import           Prelude ------------------------------------------------------------------------------- import           Aws.Core import           Aws.DynamoDb.Core@@ -84,7 +85,7 @@  instance ResponseConsumer r GetItemResponse where     type ResponseMetadata GetItemResponse = DdbResponse-    responseConsumer _ ref resp = ddbResponseConsumer ref resp+    responseConsumer _ _ ref resp = ddbResponseConsumer ref resp   instance AsMemoryResponse GetItemResponse where
Aws/DynamoDb/Commands/PutItem.hs view
@@ -26,6 +26,7 @@ import           Data.Aeson import           Data.Default import qualified Data.Text           as T+import           Prelude ------------------------------------------------------------------------------- import           Aws.Core import           Aws.DynamoDb.Core@@ -98,7 +99,7 @@  instance ResponseConsumer r PutItemResponse where     type ResponseMetadata PutItemResponse = DdbResponse-    responseConsumer _ ref resp = ddbResponseConsumer ref resp+    responseConsumer _ _ ref resp = ddbResponseConsumer ref resp   instance AsMemoryResponse PutItemResponse where
Aws/DynamoDb/Commands/Query.hs view
@@ -135,7 +135,8 @@  instance ResponseConsumer r QueryResponse where     type ResponseMetadata QueryResponse = DdbResponse-    responseConsumer _ ref resp = ddbResponseConsumer ref resp+    responseConsumer _ _ ref resp+        = ddbResponseConsumer ref resp   instance AsMemoryResponse QueryResponse where
Aws/DynamoDb/Commands/Scan.hs view
@@ -114,7 +114,7 @@  instance ResponseConsumer r ScanResponse where     type ResponseMetadata ScanResponse = DdbResponse-    responseConsumer _ ref resp = ddbResponseConsumer ref resp+    responseConsumer _ _ ref resp = ddbResponseConsumer ref resp   instance AsMemoryResponse ScanResponse where
Aws/DynamoDb/Commands/Table.hs view
@@ -44,6 +44,7 @@ import           Data.Typeable import qualified Data.Vector           as V import           GHC.Generics          (Generic)+import           Prelude ------------------------------------------------------------------------------- import           Aws.Core import           Aws.DynamoDb.Core@@ -293,7 +294,7 @@ {- Can't derive these instances onto the return values instance ResponseConsumer r TableDescription where     type ResponseMetadata TableDescription = DyMetadata-    responseConsumer _ _ = ddbResponseConsumer+    responseConsumer _ _ _ = ddbResponseConsumer instance AsMemoryResponse TableDescription where     type MemoryResponse TableDescription = TableDescription     loadToMemory = return@@ -351,7 +352,7 @@ -- ResponseConsumer and AsMemoryResponse can't be derived instance ResponseConsumer r CreateTableResult where     type ResponseMetadata CreateTableResult = DdbResponse-    responseConsumer _ = ddbResponseConsumer+    responseConsumer _ _ = ddbResponseConsumer instance AsMemoryResponse CreateTableResult where     type MemoryResponse CreateTableResult = TableDescription     loadToMemory = return . ctStatus@@ -376,7 +377,7 @@ -- ResponseConsumer can't be derived instance ResponseConsumer r DescribeTableResult where     type ResponseMetadata DescribeTableResult = DdbResponse-    responseConsumer _ = ddbResponseConsumer+    responseConsumer _ _ = ddbResponseConsumer instance AsMemoryResponse DescribeTableResult where     type MemoryResponse DescribeTableResult = TableDescription     loadToMemory = return . dtStatus@@ -408,7 +409,7 @@ -- ResponseConsumer can't be derived instance ResponseConsumer r UpdateTableResult where     type ResponseMetadata UpdateTableResult = DdbResponse-    responseConsumer _ = ddbResponseConsumer+    responseConsumer _ _ = ddbResponseConsumer instance AsMemoryResponse UpdateTableResult where     type MemoryResponse UpdateTableResult = TableDescription     loadToMemory = return . uStatus@@ -433,7 +434,7 @@ -- ResponseConsumer can't be derived instance ResponseConsumer r DeleteTableResult where     type ResponseMetadata DeleteTableResult = DdbResponse-    responseConsumer _ = ddbResponseConsumer+    responseConsumer _ _ = ddbResponseConsumer instance AsMemoryResponse DeleteTableResult where     type MemoryResponse DeleteTableResult = TableDescription     loadToMemory = return . dStatus@@ -459,7 +460,7 @@     parseJSON = A.genericParseJSON capitalizeOpt instance ResponseConsumer r ListTablesResult where     type ResponseMetadata ListTablesResult = DdbResponse-    responseConsumer _ = ddbResponseConsumer+    responseConsumer _ _ = ddbResponseConsumer instance AsMemoryResponse ListTablesResult where     type MemoryResponse ListTablesResult = [T.Text]     loadToMemory = return . tableNames
Aws/DynamoDb/Commands/UpdateItem.hs view
@@ -25,7 +25,6 @@     , AttributeUpdate(..)     , au     , UpdateAction(..)-    , UpdateItem(..)     , UpdateItemResponse(..)     ) where @@ -34,6 +33,7 @@ import           Data.Aeson import           Data.Default import qualified Data.Text           as T+import           Prelude ------------------------------------------------------------------------------- import           Aws.Core import           Aws.DynamoDb.Core@@ -158,7 +158,7 @@  instance ResponseConsumer r UpdateItemResponse where     type ResponseMetadata UpdateItemResponse = DdbResponse-    responseConsumer _ ref resp = ddbResponseConsumer ref resp+    responseConsumer _ _ ref resp = ddbResponseConsumer ref resp   instance AsMemoryResponse UpdateItemResponse where
Aws/DynamoDb/Core.hs view
@@ -399,7 +399,7 @@  ------------------------------------------------------------------------------- pico :: Rational-pico = toRational $ 10 ^ (12 :: Integer)+pico = toRational $ (10 :: Integer) ^ (12 :: Integer)   -------------------------------------------------------------------------------@@ -1142,6 +1142,7 @@ instance Default QuerySelect where def = SelectAll  -------------------------------------------------------------------------------+querySelectJson :: KeyValue t => QuerySelect -> [t] querySelectJson (SelectSpecific as) =     [ "Select" .= String "SPECIFIC_ATTRIBUTES"     , "AttributesToGet" .= as]@@ -1338,7 +1339,7 @@ -- | Parse attribute if it's present in the 'Item'. Fail if attribute -- is present but conversion fails. getAttr'-    :: forall a. (Typeable a, DynVal a)+    :: forall a. (DynVal a)     => T.Text     -- ^ Attribute name     -> Item
Aws/Ec2/InstanceMetadata.hs view
@@ -8,6 +8,7 @@ import           Data.ByteString.Lazy.UTF8 as BU import           Data.Typeable import qualified Network.HTTP.Conduit as HTTP+import           Prelude  data InstanceMetadataException   = MetadataNotFound String@@ -16,8 +17,9 @@ instance Exception InstanceMetadataException  getInstanceMetadata :: HTTP.Manager -> String -> String -> IO L.ByteString-getInstanceMetadata mgr p x = do req <- HTTP.parseUrl ("http://169.254.169.254/" ++ p ++ '/' : x)-                                 HTTP.responseBody <$> HTTP.httpLbs req mgr+getInstanceMetadata mgr p x = do+    req <- HTTP.parseUrlThrow ("http://169.254.169.254/" ++ p ++ '/' : x)+    HTTP.responseBody <$> HTTP.httpLbs req mgr  getInstanceMetadataListing :: HTTP.Manager -> String -> IO [String] getInstanceMetadataListing mgr p = map BU.toString . B8.split '\n' <$> getInstanceMetadata mgr p ""
Aws/Iam/Commands/CreateAccessKey.hs view
@@ -16,6 +16,7 @@ import qualified Data.Text           as Text import           Data.Time import           Data.Typeable+import           Prelude import           Text.XML.Cursor     (($//))  -- | Creates a new AWS secret access key and corresponding AWS access key ID@@ -58,7 +59,7 @@  instance ResponseConsumer CreateAccessKey CreateAccessKeyResponse where     type ResponseMetadata CreateAccessKeyResponse = IamMetadata-    responseConsumer _+    responseConsumer _ _         = iamResponseConsumer $ \cursor -> do             let attr name = force ("Missing " ++ Text.unpack name) $                             cursor $// elContent name
Aws/Iam/Commands/CreateUser.hs view
@@ -14,6 +14,7 @@ import           Control.Applicative import           Data.Text           (Text) import           Data.Typeable+import           Prelude  -- | Creates a new user. --@@ -41,8 +42,9 @@  instance ResponseConsumer CreateUser CreateUserResponse where     type ResponseMetadata CreateUserResponse = IamMetadata-    responseConsumer _ = iamResponseConsumer $-                         fmap CreateUserResponse . parseUser+    responseConsumer _ _+        = iamResponseConsumer $+          fmap CreateUserResponse . parseUser  instance Transaction CreateUser CreateUserResponse 
Aws/Iam/Commands/DeleteAccessKey.hs view
@@ -13,6 +13,7 @@ import           Control.Applicative import           Data.Text           (Text) import           Data.Typeable+import           Prelude  -- | Deletes the access key associated with the specified user. --@@ -39,7 +40,8 @@  instance ResponseConsumer DeleteAccessKey DeleteAccessKeyResponse where     type ResponseMetadata DeleteAccessKeyResponse = IamMetadata-    responseConsumer _ = iamResponseConsumer (const $ return DeleteAccessKeyResponse)+    responseConsumer _ _+        = iamResponseConsumer (const $ return DeleteAccessKeyResponse)  instance Transaction DeleteAccessKey DeleteAccessKeyResponse 
Aws/Iam/Commands/DeleteUser.hs view
@@ -27,7 +27,8 @@  instance ResponseConsumer DeleteUser DeleteUserResponse where     type ResponseMetadata DeleteUserResponse = IamMetadata-    responseConsumer _ = iamResponseConsumer (const $ return DeleteUserResponse)+    responseConsumer _ _+        = iamResponseConsumer (const $ return DeleteUserResponse)  instance Transaction DeleteUser DeleteUserResponse 
Aws/Iam/Commands/DeleteUserPolicy.hs view
@@ -37,7 +37,8 @@  instance ResponseConsumer DeleteUserPolicy DeleteUserPolicyResponse where     type ResponseMetadata DeleteUserPolicyResponse = IamMetadata-    responseConsumer _ = iamResponseConsumer (const $ return DeleteUserPolicyResponse)+    responseConsumer _ _ =+        iamResponseConsumer (const $ return DeleteUserPolicyResponse)  instance Transaction DeleteUserPolicy DeleteUserPolicyResponse 
Aws/Iam/Commands/GetUser.hs view
@@ -13,6 +13,7 @@ import           Control.Applicative import           Data.Text           (Text) import           Data.Typeable+import           Prelude  -- | Retreives information about the given user. --@@ -33,8 +34,8 @@  instance ResponseConsumer GetUser GetUserResponse where     type ResponseMetadata GetUserResponse = IamMetadata-    responseConsumer _ = iamResponseConsumer $-                         fmap GetUserResponse . parseUser+    responseConsumer _ _ = iamResponseConsumer $+                           fmap GetUserResponse . parseUser  instance Transaction GetUser GetUserResponse 
Aws/Iam/Commands/GetUserPolicy.hs view
@@ -16,6 +16,7 @@ import           Data.Typeable import qualified Network.HTTP.Types  as HTTP import           Text.XML.Cursor     (($//))+import           Prelude  -- | Retreives the specified policy document for the specified user. --@@ -50,7 +51,7 @@  instance ResponseConsumer GetUserPolicy GetUserPolicyResponse where     type ResponseMetadata GetUserPolicyResponse = IamMetadata-    responseConsumer _+    responseConsumer _ _         = iamResponseConsumer $ \cursor -> do             let attr name = force ("Missing " ++ Text.unpack name) $                             cursor $// elContent name
Aws/Iam/Commands/ListAccessKeys.hs view
@@ -14,6 +14,7 @@ import           Data.Text           (Text) import           Data.Time import           Data.Typeable+import           Prelude import           Text.XML.Cursor     (laxElement, ($/), ($//), (&|))  -- | Returns the access keys associated with the specified user.@@ -71,7 +72,7 @@  instance ResponseConsumer ListAccessKeys ListAccessKeysResponse where     type ResponseMetadata ListAccessKeysResponse = IamMetadata-    responseConsumer _+    responseConsumer _ _         = iamResponseConsumer $ \cursor -> do             (lakrIsTruncated, lakrMarker) <- markedIterResponse cursor             lakrAccessKeyMetadata <- sequence $
Aws/Iam/Commands/ListMfaDevices.hs view
@@ -12,6 +12,7 @@ import Control.Applicative import Data.Text (Text) import Data.Typeable+import Prelude import Text.XML.Cursor (laxElement, ($//), (&|)) -- | Lists the MFA devices. If the request includes the user name, -- then this action lists all the MFA devices associated with the@@ -60,7 +61,7 @@  instance ResponseConsumer ListMfaDevices ListMfaDevicesResponse where   type ResponseMetadata ListMfaDevicesResponse = IamMetadata-  responseConsumer _req =+  responseConsumer _ _req =     iamResponseConsumer $ \ cursor -> do       (lmfarIsTruncated, lmfarMarker) <- markedIterResponse cursor       lmfarMfaDevices <-
Aws/Iam/Commands/ListUserPolicies.hs view
@@ -52,7 +52,7 @@  instance ResponseConsumer ListUserPolicies ListUserPoliciesResponse where     type ResponseMetadata ListUserPoliciesResponse = IamMetadata-    responseConsumer _+    responseConsumer _ _         = iamResponseConsumer $ \cursor -> do             (luprIsTruncated, luprMarker) <- markedIterResponse cursor             let luprPolicyNames = cursor $// laxElement "member" &/ content
Aws/Iam/Commands/ListUsers.hs view
@@ -14,6 +14,7 @@ import           Control.Applicative import           Data.Text           (Text) import           Data.Typeable+import           Prelude import           Text.XML.Cursor     (laxElement, ($//), (&|))  -- | Lists users that have the specified path prefix.@@ -55,7 +56,7 @@  instance ResponseConsumer ListUsers ListUsersResponse where     type ResponseMetadata ListUsersResponse = IamMetadata-    responseConsumer _+    responseConsumer _ _         = iamResponseConsumer $ \cursor -> do             (lurIsTruncated, lurMarker) <- markedIterResponse cursor             lurUsers <- sequence $
Aws/Iam/Commands/PutUserPolicy.hs view
@@ -41,7 +41,7 @@  instance ResponseConsumer PutUserPolicy PutUserPolicyResponse where     type ResponseMetadata PutUserPolicyResponse = IamMetadata-    responseConsumer _+    responseConsumer _ _         = iamResponseConsumer (const $ return PutUserPolicyResponse)  instance Transaction PutUserPolicy PutUserPolicyResponse
Aws/Iam/Commands/UpdateAccessKey.hs view
@@ -13,6 +13,7 @@ import           Control.Applicative import           Data.Text           (Text) import           Data.Typeable+import           Prelude  -- | Changes the status of the specified access key. --@@ -47,7 +48,7 @@  instance ResponseConsumer UpdateAccessKey UpdateAccessKeyResponse where     type ResponseMetadata UpdateAccessKeyResponse = IamMetadata-    responseConsumer _+    responseConsumer _ _         = iamResponseConsumer (const $ return UpdateAccessKeyResponse)  instance Transaction UpdateAccessKey UpdateAccessKeyResponse
Aws/Iam/Commands/UpdateUser.hs view
@@ -13,6 +13,7 @@ import           Control.Applicative import           Data.Text           (Text) import           Data.Typeable+import           Prelude  -- | Updates the name and/or path of the specified user. --@@ -42,7 +43,7 @@  instance ResponseConsumer UpdateUser UpdateUserResponse where     type ResponseMetadata UpdateUserResponse = IamMetadata-    responseConsumer _+    responseConsumer _ _         = iamResponseConsumer (const $ return UpdateUserResponse)  instance Transaction UpdateUser UpdateUserResponse
Aws/Iam/Core.hs view
@@ -35,9 +35,7 @@ import           Data.Typeable import qualified Network.HTTP.Conduit           as HTTP import qualified Network.HTTP.Types             as HTTP-#if MIN_VERSION_time(1,5,0)-import           Data.Time.Format-#else+#if !MIN_VERSION_time(1,5,0) import           System.Locale #endif import           Text.XML.Cursor                (($//))
Aws/Iam/Internal.hs view
@@ -20,6 +20,7 @@ import           Data.ByteString     (ByteString) import           Data.Maybe import           Data.Monoid         ((<>))+import           Prelude import           Data.Text           (Text) import qualified Data.Text           as Text import qualified Data.Text.Encoding  as Text
Aws/S3/Commands/CopyObject.hs view
@@ -15,11 +15,10 @@ import           Data.Time import qualified Network.HTTP.Conduit as HTTP import           Text.XML.Cursor (($/), (&|))-#if MIN_VERSION_time(1,5,0)-import           Data.Time.Format-#else+#if !MIN_VERSION_time(1,5,0) import           System.Locale #endif+import           Prelude  data CopyMetadataDirective = CopyMetadata | ReplaceMetadata [(T.Text,T.Text)]   deriving (Show)@@ -94,7 +93,7 @@  instance ResponseConsumer CopyObject CopyObjectResponse where     type ResponseMetadata CopyObjectResponse = S3Metadata-    responseConsumer _ mref = flip s3ResponseConsumer mref $ \resp -> do+    responseConsumer _ _ mref = flip s3ResponseConsumer mref $ \resp -> do         let vid = T.decodeUtf8 `fmap` lookup "x-amz-version-id" (HTTP.responseHeaders resp)         (lastMod, etag) <- xmlCursorConsumer parse mref resp         return $ CopyObjectResponse vid lastMod etag
Aws/S3/Commands/DeleteBucket.hs view
@@ -4,7 +4,6 @@ import           Aws.Core import           Aws.S3.Core import           Data.ByteString.Char8      ({- IsString -})-import qualified Data.Text                  as T import qualified Data.Text.Encoding         as T  data DeleteBucket = DeleteBucket { dbBucket :: Bucket }@@ -31,7 +30,7 @@  instance ResponseConsumer DeleteBucket DeleteBucketResponse where     type ResponseMetadata DeleteBucketResponse = S3Metadata-    responseConsumer _ = s3ResponseConsumer $ \_ -> return DeleteBucketResponse+    responseConsumer _ _ = s3ResponseConsumer $ \_ -> return DeleteBucketResponse  instance Transaction DeleteBucket DeleteBucketResponse 
Aws/S3/Commands/DeleteObject.hs view
@@ -33,7 +33,8 @@  instance ResponseConsumer DeleteObject DeleteObjectResponse where     type ResponseMetadata DeleteObjectResponse = S3Metadata-    responseConsumer _ = s3ResponseConsumer $ \_ -> return DeleteObjectResponse+    responseConsumer _ _+        = s3ResponseConsumer $ \_ -> return DeleteObjectResponse  instance Transaction DeleteObject DeleteObjectResponse 
Aws/S3/Commands/DeleteObjects.hs view
@@ -103,7 +103,7 @@ instance ResponseConsumer DeleteObjects DeleteObjectsResponse where     type ResponseMetadata DeleteObjectsResponse = S3Metadata -    responseConsumer _ = s3XmlResponseConsumer parse+    responseConsumer _ _ = s3XmlResponseConsumer parse         where parse cursor = do                   dorDeleted <- sequence $ cursor $/ Cu.laxElement "Deleted" &| parseDeleted                   dorErrors  <- sequence $ cursor $/ Cu.laxElement "Error" &| parseErrors
Aws/S3/Commands/GetBucket.hs view
@@ -11,6 +11,7 @@ import qualified Data.Text             as T import qualified Data.Text.Encoding    as T import qualified Data.Traversable+import           Prelude import qualified Network.HTTP.Types    as HTTP import qualified Text.XML.Cursor       as Cu @@ -72,7 +73,7 @@ instance ResponseConsumer r GetBucketResponse where     type ResponseMetadata GetBucketResponse = S3Metadata -    responseConsumer _ = s3XmlResponseConsumer parse+    responseConsumer _ _ = s3XmlResponseConsumer parse         where parse cursor                   = do name <- force "Missing Name" $ cursor $/ elContent "Name"                        let delimiter = listToMaybe $ cursor $/ elContent "Delimiter"
Aws/S3/Commands/GetBucketLocation.hs view
@@ -44,7 +44,7 @@ instance ResponseConsumer r GetBucketLocationResponse where   type ResponseMetadata GetBucketLocationResponse = S3Metadata -  responseConsumer _ = s3XmlResponseConsumer parse+  responseConsumer _ _ = s3XmlResponseConsumer parse     where parse cursor = do             locationConstraint <- force "Missing Location" $ cursor $.// elContent "LocationConstraint"             return GetBucketLocationResponse { gblrLocationConstraint = normaliseLocation locationConstraint }
Aws/S3/Commands/GetObject.hs view
@@ -1,10 +1,12 @@+{-# LANGUAGE CPP #-}+ module Aws.S3.Commands.GetObject where  import           Aws.Core import           Aws.S3.Core import           Control.Applicative-import           Control.Monad.Trans.Resource (ResourceT, throwM)+import           Control.Monad.Trans.Resource (ResourceT) import           Data.ByteString.Char8 ({- IsString -}) import qualified Data.ByteString.Char8 as B8 import qualified Data.ByteString.Lazy  as L@@ -13,6 +15,7 @@ import           Data.Maybe import qualified Data.Text             as T import qualified Data.Text.Encoding    as T+import           Prelude import qualified Network.HTTP.Conduit  as HTTP import qualified Network.HTTP.Types    as HTTP @@ -79,16 +82,14 @@  instance ResponseConsumer GetObject GetObjectResponse where     type ResponseMetadata GetObjectResponse = S3Metadata-    responseConsumer GetObject{..} metadata resp+    responseConsumer httpReq GetObject{..} metadata resp         | status == HTTP.status200 = do             rsp <- s3BinaryResponseConsumer return metadata resp             om <- parseObjectMetadata (HTTP.responseHeaders resp)             return $ GetObjectResponse om rsp-        | otherwise = throwM $ HTTP.StatusCodeException status headers cookies+        | otherwise = throwStatusCodeException httpReq resp       where         status  = HTTP.responseStatus    resp-        headers = HTTP.responseHeaders   resp-        cookies = HTTP.responseCookieJar resp  instance Transaction GetObject GetObjectResponse 
Aws/S3/Commands/GetService.hs view
@@ -25,7 +25,7 @@ instance ResponseConsumer r GetServiceResponse where     type ResponseMetadata GetServiceResponse = S3Metadata -    responseConsumer _ = s3XmlResponseConsumer parse+    responseConsumer _ _ = s3XmlResponseConsumer parse         where           parse el = do             owner <- forceM "Missing Owner" $ el $/ Cu.laxElement "Owner" &| parseUserInfo
Aws/S3/Commands/HeadObject.hs view
@@ -4,12 +4,12 @@ import           Aws.Core import           Aws.S3.Core import           Control.Applicative-import           Control.Monad.Trans.Resource (throwM) import           Data.ByteString.Char8 ({- IsString -}) import qualified Data.ByteString.Char8 as B8 import           Data.Maybe import qualified Data.Text             as T import qualified Data.Text.Encoding    as T+import           Prelude import qualified Network.HTTP.Conduit  as HTTP import qualified Network.HTTP.Types    as HTTP @@ -60,14 +60,13 @@  instance ResponseConsumer HeadObject HeadObjectResponse where     type ResponseMetadata HeadObjectResponse = S3Metadata-    responseConsumer HeadObject{..} _ resp+    responseConsumer httpReq HeadObject{..} _ resp         | status == HTTP.status200 = HeadObjectResponse . Just <$> parseObjectMetadata headers         | status == HTTP.status404 = return $ HeadObjectResponse Nothing-        | otherwise = throwM $ HTTP.StatusCodeException status headers cookies+        | otherwise = throwStatusCodeException httpReq resp       where         status  = HTTP.responseStatus    resp         headers = HTTP.responseHeaders   resp-        cookies = HTTP.responseCookieJar resp  instance Transaction HeadObject HeadObjectResponse 
Aws/S3/Commands/Multipart.hs view
@@ -22,6 +22,7 @@ import qualified Network.HTTP.Conduit  as HTTP import qualified Network.HTTP.Types    as HTTP import qualified Text.XML              as XML+import           Prelude  {- Aws supports following 6 api for Multipart-Upload.@@ -99,7 +100,7 @@ instance ResponseConsumer r InitiateMultipartUploadResponse where     type ResponseMetadata InitiateMultipartUploadResponse = S3Metadata -    responseConsumer _ = s3XmlResponseConsumer parse+    responseConsumer _ _ = s3XmlResponseConsumer parse         where parse cursor                   = do bucket <- force "Missing Bucket Name" $ cursor $/ elContent "Bucket"                        key <- force "Missing Key" $ cursor $/ elContent "Key"@@ -172,7 +173,7 @@  instance ResponseConsumer UploadPart UploadPartResponse where     type ResponseMetadata UploadPartResponse = S3Metadata-    responseConsumer _ = s3ResponseConsumer $ \resp -> do+    responseConsumer _ _ = s3ResponseConsumer $ \resp -> do       let vid = T.decodeUtf8 `fmap` lookup "x-amz-version-id" (HTTP.responseHeaders resp)       let etag = fromMaybe "" $ T.decodeUtf8 `fmap` lookup "ETag" (HTTP.responseHeaders resp)       return $ UploadPartResponse vid etag@@ -259,7 +260,7 @@ instance ResponseConsumer r CompleteMultipartUploadResponse where     type ResponseMetadata CompleteMultipartUploadResponse = S3Metadata -    responseConsumer _ = s3XmlResponseConsumer parse+    responseConsumer _ _ = s3XmlResponseConsumer parse         where parse cursor                   = do location <- force "Missing Location" $ cursor $/ elContent "Location"                        bucket <- force "Missing Bucket Name" $ cursor $/ elContent "Bucket"@@ -318,7 +319,7 @@ instance ResponseConsumer r AbortMultipartUploadResponse where     type ResponseMetadata AbortMultipartUploadResponse = S3Metadata -    responseConsumer _ = s3XmlResponseConsumer parse+    responseConsumer _ _ = s3XmlResponseConsumer parse         where parse _cursor                   = return AbortMultipartUploadResponse {} 
Aws/S3/Commands/PutBucket.hs view
@@ -74,7 +74,7 @@ instance ResponseConsumer r PutBucketResponse where     type ResponseMetadata PutBucketResponse = S3Metadata -    responseConsumer _ = s3ResponseConsumer $ \_ -> return PutBucketResponse+    responseConsumer _ _ = s3ResponseConsumer $ \_ -> return PutBucketResponse  instance Transaction PutBucket PutBucketResponse 
Aws/S3/Commands/PutObject.hs view
@@ -13,6 +13,7 @@ import qualified Data.CaseInsensitive  as CI import qualified Data.Text             as T import qualified Data.Text.Encoding    as T+import           Prelude import qualified Network.HTTP.Conduit  as HTTP  data PutObject = PutObject {@@ -83,7 +84,7 @@  instance ResponseConsumer PutObject PutObjectResponse where     type ResponseMetadata PutObjectResponse = S3Metadata-    responseConsumer _ = s3ResponseConsumer $ \resp -> do+    responseConsumer _ _ = s3ResponseConsumer $ \resp -> do       let vid = T.decodeUtf8 `fmap` lookup "x-amz-version-id" (HTTP.responseHeaders resp)       return $ PutObjectResponse vid 
Aws/S3/Core.hs view
@@ -18,9 +18,7 @@ import           Control.Applicative            ((<|>)) import           Data.Time import           Data.Typeable-#if MIN_VERSION_time(1,5,0)-import           Data.Time.Format-#else+#if !MIN_VERSION_time(1,5,0) import           System.Locale #endif import           Text.XML.Cursor                (($/), (&|))@@ -38,6 +36,7 @@ import qualified Network.HTTP.Types             as HTTP import qualified Text.XML                       as XML import qualified Text.XML.Cursor                as Cu+import           Prelude  data S3Authorization     = S3AuthorizationHeader@@ -200,7 +199,22 @@       canonicalizedResource = Blaze8.fromChar '/' `mappend`                               maybe mempty (\s -> Blaze.copyByteString s `mappend` Blaze8.fromChar '/') s3QBucket `mappend`                               maybe mempty Blaze.copyByteString urlEncodedS3QObject `mappend`-                              HTTP.renderQueryBuilder True sortedSubresources+                              encodeQuerySign sortedSubresources+      -- query parameters overriding response headers must not be URI encoded when calculating signature+      -- http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#ConstructingTheCanonicalizedResourceElement+      -- Note this is limited to amazon auth version 2 in the new auth version 4 this weird exception is not present+      encodeQuerySign qs =+          let ceq = Blaze8.fromChar '='+              cqt = Blaze8.fromChar '?'+              camp = Blaze8.fromChar '&'+              overrideParams = map B8.pack ["response-content-type", "response-content-language", "response-expires", "response-cache-control", "response-content-disposition", "response-content-encoding"]+              encItem (k, mv) =+                  let enc = if k `elem` overrideParams then Blaze.copyByteString else HTTP.urlEncodeBuilder True+                  in  enc k `mappend` maybe mempty (mappend ceq . enc) mv+          in case intersperse camp (map encItem qs) of+               [] -> mempty+               qs' -> mconcat (cqt :qs')+       ti = case (s3UseUri, signatureTimeInfo) of              (False, ti') -> ti'              (True, AbsoluteTimestamp time) -> AbsoluteExpires $ s3DefaultExpiry `addUTCTime` time
Aws/Ses/Commands/DeleteIdentity.hs view
@@ -29,7 +29,8 @@  instance ResponseConsumer DeleteIdentity DeleteIdentityResponse where     type ResponseMetadata DeleteIdentityResponse = SesMetadata-    responseConsumer _ = sesResponseConsumer $ \_ -> return DeleteIdentityResponse+    responseConsumer _ _+        = sesResponseConsumer $ \_ -> return DeleteIdentityResponse   instance Transaction DeleteIdentity DeleteIdentityResponse where
Aws/Ses/Commands/GetIdentityDkimAttributes.hs view
@@ -44,7 +44,7 @@  instance ResponseConsumer GetIdentityDkimAttributes GetIdentityDkimAttributesResponse where     type ResponseMetadata GetIdentityDkimAttributesResponse = SesMetadata-    responseConsumer _ = sesResponseConsumer $ \cursor -> do+    responseConsumer _ _ = sesResponseConsumer $ \cursor -> do         let buildAttr e = do               idIdentity <- force "Missing Key" $ e $/ elContent "key"               enabled <- force "Missing DkimEnabled" $ e $// elContent "DkimEnabled"
Aws/Ses/Commands/GetIdentityNotificationAttributes.hs view
@@ -43,7 +43,7 @@  instance ResponseConsumer GetIdentityNotificationAttributes GetIdentityNotificationAttributesResponse where     type ResponseMetadata GetIdentityNotificationAttributesResponse = SesMetadata-    responseConsumer _ = sesResponseConsumer $ \cursor -> do+    responseConsumer _ _ = sesResponseConsumer $ \cursor -> do         let buildAttr e = do               inIdentity <- force "Missing Key" $ e $/ elContent "key"               fwdText <- force "Missing ForwardingEnabled" $ e $// elContent "ForwardingEnabled"
Aws/Ses/Commands/GetIdentityVerificationAttributes.hs view
@@ -45,7 +45,7 @@  instance ResponseConsumer GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse where     type ResponseMetadata GetIdentityVerificationAttributesResponse = SesMetadata-    responseConsumer _ =+    responseConsumer _ _ =       sesResponseConsumer $ \cursor -> do          let buildAttr e = do                ivIdentity <- force "Missing Key" $ e $/ elContent "key"
Aws/Ses/Commands/ListIdentities.hs view
@@ -50,7 +50,7 @@  instance ResponseConsumer ListIdentities ListIdentitiesResponse where     type ResponseMetadata ListIdentitiesResponse = SesMetadata-    responseConsumer _ =+    responseConsumer _ _ =       sesResponseConsumer $ \cursor -> do          let ids = cursor $// laxElement "Identities" &/ elContent "member"          return $ ListIdentitiesResponse ids
Aws/Ses/Commands/SendRawEmail.hs view
@@ -45,7 +45,7 @@  instance ResponseConsumer SendRawEmail SendRawEmailResponse where     type ResponseMetadata SendRawEmailResponse = SesMetadata-    responseConsumer _ =+    responseConsumer _ _ =       sesResponseConsumer $ \cursor -> do         messageId <- force "MessageId not found" $ cursor $// elContent "MessageId"         return (SendRawEmailResponse messageId)
Aws/Ses/Commands/SetIdentityDkimEnabled.hs view
@@ -32,7 +32,8 @@  instance ResponseConsumer SetIdentityDkimEnabled SetIdentityDkimEnabledResponse where     type ResponseMetadata SetIdentityDkimEnabledResponse = SesMetadata-    responseConsumer _ = sesResponseConsumer $ \_ -> return SetIdentityDkimEnabledResponse+    responseConsumer _ _+        = sesResponseConsumer $ \_ -> return SetIdentityDkimEnabledResponse  instance Transaction SetIdentityDkimEnabled SetIdentityDkimEnabledResponse 
Aws/Ses/Commands/SetIdentityFeedbackForwardingEnabled.hs view
@@ -34,7 +34,8 @@  instance ResponseConsumer SetIdentityFeedbackForwardingEnabled SetIdentityFeedbackForwardingEnabledResponse where     type ResponseMetadata SetIdentityFeedbackForwardingEnabledResponse = SesMetadata-    responseConsumer _ = sesResponseConsumer $ \_ -> return SetIdentityFeedbackForwardingEnabledResponse +    responseConsumer _ _+        = sesResponseConsumer $ \_ -> return SetIdentityFeedbackForwardingEnabledResponse  instance Transaction SetIdentityFeedbackForwardingEnabled SetIdentityFeedbackForwardingEnabledResponse 
Aws/Ses/Commands/SetIdentityNotificationTopic.hs view
@@ -48,7 +48,8 @@  instance ResponseConsumer SetIdentityNotificationTopic SetIdentityNotificationTopicResponse where     type ResponseMetadata SetIdentityNotificationTopicResponse = SesMetadata-    responseConsumer _ = sesResponseConsumer $ \_ -> return SetIdentityNotificationTopicResponse +    responseConsumer _ _+        = sesResponseConsumer $ \_ -> return SetIdentityNotificationTopicResponse  instance Transaction SetIdentityNotificationTopic SetIdentityNotificationTopicResponse 
Aws/Ses/Commands/VerifyDomainDkim.hs view
@@ -28,7 +28,7 @@  instance ResponseConsumer VerifyDomainDkim VerifyDomainDkimResponse where     type ResponseMetadata VerifyDomainDkimResponse = SesMetadata-    responseConsumer _ =+    responseConsumer _ _ =       sesResponseConsumer $ \cursor -> do         let tokens = cursor $// laxElement "DkimTokens" &/ elContent "member"         return (VerifyDomainDkimResponse tokens)
Aws/Ses/Commands/VerifyDomainIdentity.hs view
@@ -29,7 +29,7 @@  instance ResponseConsumer VerifyDomainIdentity VerifyDomainIdentityResponse where     type ResponseMetadata VerifyDomainIdentityResponse = SesMetadata-    responseConsumer _ =+    responseConsumer _ _ =       sesResponseConsumer $ \cursor -> do         token <- force "Verification token not found" $ cursor $// elContent "VerificationToken"         return (VerifyDomainIdentityResponse token)
Aws/Ses/Commands/VerifyEmailIdentity.hs view
@@ -29,7 +29,8 @@  instance ResponseConsumer VerifyEmailIdentity VerifyEmailIdentityResponse where     type ResponseMetadata VerifyEmailIdentityResponse = SesMetadata-    responseConsumer _ = sesResponseConsumer $ \_ -> return VerifyEmailIdentityResponse+    responseConsumer _ _+        = sesResponseConsumer $ \_ -> return VerifyEmailIdentityResponse   instance Transaction VerifyEmailIdentity VerifyEmailIdentityResponse where
Aws/Ses/Core.hs view
@@ -36,6 +36,7 @@ import           Data.Text                      (Text) import qualified Data.Text.Encoding             as TE import           Data.Typeable+import           Prelude import qualified Network.HTTP.Conduit           as HTTP import qualified Network.HTTP.Types             as HTTP import           Text.XML.Cursor                (($/), ($//))
Aws/SimpleDb/Commands/Attributes.hs view
@@ -5,6 +5,7 @@ import           Control.Applicative import           Control.Monad import           Data.Maybe+import           Prelude import           Text.XML.Cursor            (($//), (&|)) import qualified Data.Text                  as T import qualified Data.Text.Encoding         as T@@ -39,7 +40,8 @@  instance ResponseConsumer r GetAttributesResponse where     type ResponseMetadata GetAttributesResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer parse+    responseConsumer _ _+        = sdbResponseConsumer parse         where parse cursor = do                 sdbCheckResponseType () "GetAttributesResponse" cursor                 attributes <- sequence $ cursor $// Cu.laxElement "Attribute" &| readAttribute@@ -83,7 +85,8 @@  instance ResponseConsumer r PutAttributesResponse where     type ResponseMetadata PutAttributesResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer $ sdbCheckResponseType PutAttributesResponse "PutAttributesResponse"+    responseConsumer _ _+        = sdbResponseConsumer $ sdbCheckResponseType PutAttributesResponse "PutAttributesResponse"  instance Transaction PutAttributes PutAttributesResponse @@ -123,7 +126,8 @@  instance ResponseConsumer r DeleteAttributesResponse where     type ResponseMetadata DeleteAttributesResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer $ sdbCheckResponseType DeleteAttributesResponse "DeleteAttributesResponse"+    responseConsumer _ _+        = sdbResponseConsumer $ sdbCheckResponseType DeleteAttributesResponse "DeleteAttributesResponse"  instance Transaction DeleteAttributes DeleteAttributesResponse @@ -156,7 +160,8 @@  instance ResponseConsumer r BatchPutAttributesResponse where     type ResponseMetadata BatchPutAttributesResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer $ sdbCheckResponseType BatchPutAttributesResponse "BatchPutAttributesResponse"+    responseConsumer _ _+        = sdbResponseConsumer $ sdbCheckResponseType BatchPutAttributesResponse "BatchPutAttributesResponse"  instance Transaction BatchPutAttributes BatchPutAttributesResponse @@ -189,7 +194,8 @@  instance ResponseConsumer r BatchDeleteAttributesResponse where     type ResponseMetadata BatchDeleteAttributesResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer $ sdbCheckResponseType BatchDeleteAttributesResponse "BatchDeleteAttributesResponse"+    responseConsumer _ _+        = sdbResponseConsumer $ sdbCheckResponseType BatchDeleteAttributesResponse "BatchDeleteAttributesResponse"  instance Transaction BatchDeleteAttributes BatchDeleteAttributesResponse 
Aws/SimpleDb/Commands/Domain.hs view
@@ -6,6 +6,7 @@ import           Data.Maybe import           Data.Time import           Data.Time.Clock.POSIX+import           Prelude import           Text.XML.Cursor       (($//), (&|)) import qualified Data.Text             as T import qualified Data.Text.Encoding    as T@@ -30,7 +31,8 @@  instance ResponseConsumer r CreateDomainResponse where     type ResponseMetadata CreateDomainResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer $ sdbCheckResponseType CreateDomainResponse "CreateDomainResponse"+    responseConsumer _ _+        = sdbResponseConsumer $ sdbCheckResponseType CreateDomainResponse "CreateDomainResponse"  instance Transaction CreateDomain CreateDomainResponse @@ -58,7 +60,8 @@  instance ResponseConsumer r DeleteDomainResponse where     type ResponseMetadata DeleteDomainResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer $ sdbCheckResponseType DeleteDomainResponse "DeleteDomainResponse"+    responseConsumer _ _+        = sdbResponseConsumer $ sdbCheckResponseType DeleteDomainResponse "DeleteDomainResponse"  instance Transaction DeleteDomain DeleteDomainResponse @@ -95,7 +98,8 @@ instance ResponseConsumer r DomainMetadataResponse where     type ResponseMetadata DomainMetadataResponse = SdbMetadata -    responseConsumer _ = sdbResponseConsumer parse+    responseConsumer _ _+        = sdbResponseConsumer parse         where parse cursor = do                 sdbCheckResponseType () "DomainMetadataResponse" cursor                 dmrTimestamp <- forceM "Timestamp expected" $ cursor $// elCont "Timestamp" &| (fmap posixSecondsToUTCTime . readInt)@@ -141,7 +145,7 @@  instance ResponseConsumer r ListDomainsResponse where     type ResponseMetadata ListDomainsResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer parse+    responseConsumer _ _ = sdbResponseConsumer parse         where parse cursor = do                 sdbCheckResponseType () "ListDomainsResponse" cursor                 let names = cursor $// elContent "DomainName"
Aws/SimpleDb/Commands/Select.hs view
@@ -6,6 +6,7 @@ import           Control.Applicative import           Control.Monad import           Data.Maybe+import           Prelude import           Text.XML.Cursor            (($//), (&|)) import qualified Data.Text                  as T import qualified Data.Text.Encoding         as T@@ -42,7 +43,7 @@  instance ResponseConsumer r SelectResponse where     type ResponseMetadata SelectResponse = SdbMetadata-    responseConsumer _ = sdbResponseConsumer parse+    responseConsumer _ _ = sdbResponseConsumer parse         where parse cursor = do                 sdbCheckResponseType () "SelectResponse" cursor                 items <- sequence $ cursor $// Cu.laxElement "Item" &| readItem
Aws/SimpleDb/Core.hs view
@@ -15,6 +15,7 @@ import qualified Data.Text                      as T import qualified Data.Text.Encoding             as T import           Data.Typeable+import           Prelude import qualified Network.HTTP.Conduit           as HTTP import qualified Network.HTTP.Types             as HTTP import           Text.XML.Cursor                (($|), ($/), ($//), (&|))
Aws/Sqs/Commands/Message.hs view
@@ -39,6 +39,7 @@ import qualified Network.HTTP.Types as HTTP import Text.Read (readEither) import qualified Text.XML.Cursor as Cu+import Prelude  -- -------------------------------------------------------------------------- -- -- User Message Attributes@@ -216,7 +217,7 @@  instance ResponseConsumer r SendMessageResponse where     type ResponseMetadata SendMessageResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where         parse el = SendMessageResponse             <$> force "Missing MD5 Signature"@@ -287,7 +288,7 @@  instance ResponseConsumer r DeleteMessageResponse where     type ResponseMetadata DeleteMessageResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where         parse _ = return DeleteMessageResponse {} @@ -559,7 +560,7 @@  instance ResponseConsumer r ReceiveMessageResponse where     type ResponseMetadata ReceiveMessageResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where         parse el = do             result <- force "Missing ReceiveMessageResult"@@ -660,7 +661,7 @@  instance ResponseConsumer r ChangeMessageVisibilityResponse where     type ResponseMetadata ChangeMessageVisibilityResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where         parse _ = return ChangeMessageVisibilityResponse {} 
Aws/Sqs/Commands/Permission.hs view
@@ -25,7 +25,7 @@  instance ResponseConsumer r AddPermissionResponse where     type ResponseMetadata AddPermissionResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse        where          parse _ = do            return AddPermissionResponse {}@@ -55,7 +55,7 @@  instance ResponseConsumer r RemovePermissionResponse where     type ResponseMetadata RemovePermissionResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where          parse _ = do           return RemovePermissionResponse {}  
Aws/Sqs/Commands/Queue.hs view
@@ -5,6 +5,7 @@ import           Aws.Sqs.Core import           Control.Applicative import           Data.Maybe+import           Prelude import           Text.XML.Cursor       (($//), (&/)) import qualified Data.Text             as T import qualified Data.Text.Encoding    as TE@@ -23,7 +24,7 @@  instance ResponseConsumer r CreateQueueResponse where     type ResponseMetadata CreateQueueResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where         parse el = do           url <- force "Missing Queue Url" $ el $// Cu.laxElement "QueueUrl" &/ Cu.content@@ -55,7 +56,7 @@  instance ResponseConsumer r DeleteQueueResponse where     type ResponseMetadata DeleteQueueResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where         parse _ = do return DeleteQueueResponse{}           @@ -82,7 +83,7 @@  instance ResponseConsumer r ListQueuesResponse where     type ResponseMetadata ListQueuesResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where         parse el = do             let queues = el $// Cu.laxElement "QueueUrl" &/ Cu.content
Aws/Sqs/Commands/QueueAttributes.hs view
@@ -27,7 +27,7 @@  instance ResponseConsumer r GetQueueAttributesResponse where     type ResponseMetadata GetQueueAttributesResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where         parse el = do           let attributes = concat $ el $// Cu.laxElement "Attribute" &| parseAttributes@@ -64,7 +64,7 @@  instance ResponseConsumer r SetQueueAttributesResponse where     type ResponseMetadata SetQueueAttributesResponse = SqsMetadata-    responseConsumer _ = sqsXmlResponseConsumer parse+    responseConsumer _ _ = sqsXmlResponseConsumer parse       where          parse _ = do           return SetQueueAttributesResponse {}
Aws/Sqs/Core.hs view
@@ -22,11 +22,10 @@ import qualified Data.Text.Encoding             as TE import           Data.Time import           Data.Typeable+import           Prelude import qualified Network.HTTP.Conduit           as HTTP import qualified Network.HTTP.Types             as HTTP-#if MIN_VERSION_time(1,5,0)-import           Data.Time.Format-#else+#if !MIN_VERSION_time(1,5,0) import           System.Locale #endif import qualified Text.XML                       as XML
CHANGELOG.md view
@@ -1,15 +1,29 @@+0.15 series+-----------++NOTES: 0.15 brings technically breaking changes, but should not affect+most users.++-   0.15+    -   Drop support for time <1.5+    -   Support http-client 2.2+    -   Support directory 1.3+    -   Add upper bound on http-client in testsuite+    -   DynamoDB: Eliminate orphan instance that conflicted with aeson-1.0+    -   S3: Don't URI encode response header override query params when signing+    -   Use HTTP.newManager instead of deprecated HTTP.withManager+    -   Signing: Change date format from space-padding to zero-padding+ 0.14 series+-----------  NOTES: 0.14 brings potentially breaking changes --   0.14.1-    -   Eliminate orphan instance that conflicted with aeson-1.0-    -   Add upper bound on http-client in testsuite -   0.14     -   transformers 0.5 support     -   data-default 0.6 support (also in 0.13.1)     -   time < 2.0 support-    -   General: Use AWS_SESSION_TOKEN if in environment for loading credentials+    -   General: Use `AWS_SESSION_TOKEN` if in environment for loading credentials     -   General: loadCredentialsDefault fails gracefully if HOME is not set     -   DDB: Add parseAttr combinator for parsing an attribute into a FromDynItem     -   DDB: Expose the new DynBool type
+ Examples/GetObjectGoogle.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE OverloadedStrings #-}++import qualified Aws+import qualified Aws.Core as Aws+import qualified Aws.S3 as S3+import           Data.Conduit (($$+-))+import           Data.Conduit.Binary (sinkFile)+import           Network.HTTP.Conduit (withManager, responseBody)++main :: IO ()+main = do+  Just creds <- Aws.loadCredentialsFromEnv+  let cfg = Aws.Configuration Aws.Timestamp creds (Aws.defaultLog Aws.Debug)+  let s3cfg = S3.s3 Aws.HTTP "storage.googleapis.com" False+  {- Set up a ResourceT region with an available HTTP manager. -}+  withManager $ \mgr -> do+    {- Create a request object with S3.getObject and run the request with pureAws. -}+    S3.GetObjectResponse { S3.gorResponse = rsp } <-+      Aws.pureAws cfg s3cfg mgr $+        {- Public bucket from GCP examples -}+        S3.getObject "uspto-pair" "applications/05900016.zip"++    {- Save the response to a file. -}+    responseBody rsp $$+- sinkFile "getobject-test.zip"
aws.cabal view
@@ -1,5 +1,5 @@ Name:                aws-Version:             0.14.1+Version:             0.15 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.md>. Homepage:            http://github.com/aristidb/aws@@ -19,7 +19,7 @@ Source-repository this   type: git   location: https://github.com/aristidb/aws.git-  tag: 0.14.0+  tag: 0.15  Source-repository head   type: git@@ -125,9 +125,9 @@                        containers           >= 0.4,                        cryptohash           >= 0.11    && < 0.12,                        data-default         >= 0.5.3   && < 0.8,-                       directory            >= 1.0     && < 1.3,+                       directory            >= 1.0     && < 2.0,                        filepath             >= 1.1     && < 1.5,-                       http-conduit         >= 2.1     && < 2.2,+                       http-conduit         >= 2.1     && < 2.3,                        http-types           >= 0.7     && < 0.10,                        lifted-base          >= 0.1     && < 0.3,                        monad-control        >= 0.3,@@ -139,7 +139,7 @@                        scientific           >= 0.3,                        tagged               >= 0.7     && < 0.9,                        text                 >= 0.11,-                       time                 >= 1.1.4   && < 2.0,+                       time                 >= 1.4.0   && < 1.7,                        transformers         >= 0.2.2   && < 0.6,                        unordered-containers >= 0.2,                        utf8-string          >= 0.3     && < 1.1,@@ -169,6 +169,23 @@  Executable GetObject   Main-is: GetObject.hs+  Hs-source-dirs: Examples++  if !flag(Examples)+    Buildable: False+  else+    Buildable: True+    Build-depends:+                       base == 4.*,+                       aws,+                       http-conduit,+                       conduit,+                       conduit-extra++  Default-Language: Haskell2010++Executable GetObjectGoogle+  Main-is: GetObjectGoogle.hs   Hs-source-dirs: Examples    if !flag(Examples)