aws-0.6.0: Examples/GetObject.hs
{-# LANGUAGE OverloadedStrings #-}
import qualified Aws
import qualified Aws.S3 as S3
import Data.Conduit
import Data.Conduit.Binary
import Data.IORef
import Data.Monoid
{- A small function to save the object's data into a file. -}
saveObject :: Aws.HTTPResponseConsumer ()
saveObject status headers source = source $$+- sinkFile "cloud-remote.pdf"
main :: IO ()
main = do
{- Set up AWS credentials and the default configuration. -}
cfg <- Aws.baseConfiguration
let s3Cfg = Aws.defaultConfiguration
{- Create an IORef to store the response Metadata (so it is also available in case of an error). -}
metadataRef <- newIORef mempty
{- Create a request object with S3.getObject and run the request with simpleAwsRef. -}
Aws.simpleAwsRef cfg s3Cfg metadataRef $ S3.getObject "haskell-aws" "cloud-remote.pdf" saveObject
{- Print the response metadata. -}
print =<< readIORef metadataRef