content: -- | Example of creating a Nearline bucket on Google Cloud Storage.
  
  {-# LANGUAGE OverloadedStrings #-}
  
  import qualified Aws
  import qualified Aws.Core as Aws
  import qualified Aws.S3 as S3
  import           Data.Conduit.Binary (sinkFile)
  import           Control.Monad.Trans.Resource
  import           Network.HTTP.Conduit (newManager, tlsManagerSettings, RequestBody(..))
  import Control.Monad.IO.Class
  import Control.Concurrent
  import System.IO
  import Control.Applicative
  import qualified Data.Text as T
  import System.Environment
  
  sc :: S3.StorageClass
  sc = S3.OtherStorageClass (T.pack "NEARLINE")
  
  main :: IO ()
  main = do
    [bucket] <- fmap (map T.pack) getArgs
  
    {- Set up AWS credentials and S3 configuration using the Google Cloud
     - Storage endpoint. -}
    Just creds <- Aws.loadCredentialsFromEnv
    let cfg = Aws.Configuration Aws.Timestamp creds (Aws.defaultLog Aws.Debug) Nothing
    let s3cfg = S3.s3 Aws.HTTP "storage.googleapis.com" False
  
    {- Set up a ResourceT region with an available HTTP manager. -}
    mgr <- newManager tlsManagerSettings
    runResourceT $ do
      {- Create a request object with S3.PutBucket and run the request with pureAws. -}
      rsp <-
        Aws.pureAws cfg s3cfg mgr $
          S3.PutBucket bucket Nothing "US" (Just sc)
      liftIO $ print rsp
  