on develop help sign in
Replacing requestBodySource/Chunked with specific non-chunked export
commit2e91828d7f678868f4a20670cfbc5c0d6bfefdd7 authorBrendan Hay <brendan.g.hay@gmail.com> dateMon 26 Oct 2015, 13:13 (11 years ago) parente274408
3 files changed+30−5
gogol/gogol.cabal+3−1 gogol/src/Network/Google.hs+2−4 gogol/src/Network/Google/Internal/Body.hs+25
gogol/gogol.cabal+3−1
@@ -45,7 +45,8 @@ library
4545 , Network.Google.Env
4646
4747 other-modules:
48− Network.Google.Internal.HTTP
48+ Network.Google.Internal.Body
49+ , Network.Google.Internal.HTTP
4950 , Network.Google.Internal.Logger
5051 , Network.Google.Internal.Multipart
5152
@@ -54,6 +55,7 @@ library
5455 , base >= 4.7 && < 5
5556 , bytestring >= 0.9
5657 , case-insensitive >= 1.2
58+ , conduit-extra >= 1.1
5759 , cryptonite >= 0.6
5860 , data-default-class >= 0.0.1
5961 , directory >= 1.2
gogol/src/Network/Google.hs+2−4
@@ -50,8 +50,7 @@ module Network.Google
5050
5151 , ToBody (..)
5252 , RequestBody
53− , requestBodySource
54− , requestBodySourceChunked
53+ , sourceBody
5554
5655 -- ** Service Configuration
5756 -- ** Overriding Defaults
@@ -109,12 +108,11 @@ import qualified Control.Monad.Writer.Lazy as LW
109108import qualified Control.Monad.Writer.Strict as W
110109import Network.Google.Auth
111110import Network.Google.Env
111+import Network.Google.Internal.Body
112112import Network.Google.Internal.HTTP
113113import Network.Google.Internal.Logger
114114import Network.Google.Prelude
115115import Network.Google.Types
116−import Network.HTTP.Conduit (requestBodySource,
117− requestBodySourceChunked)
118116
119117newtype Google a = Google { unGoogle :: ReaderT Env (ResourceT IO) a }
120118 deriving
gogol/src/Network/Google/Internal/Body.hsnew file+25
@@ -0,0 +1,25 @@
1+-- |
2+-- Module : Network.Google.Internal.Body
3+-- Copyright : (c) 2015 Brendan Hay
4+-- License : Mozilla Public License, v. 2.0.
5+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
6+-- Stability : provisional
7+-- Portability : non-portable (GHC extensions)
8+module Network.Google.Internal.Body where
9+
10+import Control.Monad.IO.Class
11+import Data.Conduit.Binary
12+import Network.HTTP.Conduit
13+import System.IO
14+
15+-- | Convenience function for obtaining the size of a file.
16+getFileSize :: MonadIO m => FilePath -> m Integer
17+getFileSize f = liftIO (withBinaryFile f ReadMode hFileSize)
18+
19+-- | Construct a 'RequestBody' from a 'FilePath'.
20+--
21+-- /See:/ 'ToBody'.
22+sourceBody :: MonadIO m => FilePath -> m RequestBody
23+sourceBody f = do
24+ n <- getFileSize f
25+ pure $ requestBodySource (fromIntegral n) (sourceFile f)