on 1ac3df7 help sign in
33 lines 1.0 kB history raw
1{-# LANGUAGE OverloadedStrings #-}
3-- |
4-- Module : Example.Storage
5-- Copyright : (c) 2015 Brendan Hay
6-- License : Mozilla Public License, v. 2.0.
7-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
8-- Stability : provisional
9-- Portability : non-portable (GHC extensions)
10--
11module Example.Storage where
13import Control.Lens
14import Data.Conduit.Binary
15import Data.Text (Text)
16import qualified Data.Text as Text
17import Network.Google
18import Network.Google.Storage
19import System.IO
21example :: Text -> FilePath -> IO ()
22example bkt f = do
23 l <- newLogger Debug stdout
24 e <- newEnv Discover <&> envLogger .~ l
26 let key = Text.pack f
27 src = requestBodySourceChunked (sourceFile f)
28 obj = object' & objContentType ?~ "application/octet-stream"
30 runResourceT . runGoogle e $ do
31 _ <- upload (objectsInsert bkt obj & oiName ?~ key) src
32 _ <- download (objectsGet bkt key)
33 pure ()