Merge pull request #1503 from ncaq/add-file-source-bytes

added: fileSourceByteString
This commit is contained in:
Michael Snoyman 2018-05-04 08:45:20 +03:00 committed by GitHub
commit 5861357923
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,7 @@
## 1.6.5
* Add `fileSourceByteString` [#1503](https://github.com/yesodweb/yesod/pull/1503)
## 1.6.4 ## 1.6.4
* Add `addContentDispositionFileName` [#1504](https://github.com/yesodweb/yesod/pull/1504) * Add `addContentDispositionFileName` [#1504](https://github.com/yesodweb/yesod/pull/1504)

View File

@ -47,6 +47,7 @@ module Yesod.Core.Handler
, fileName , fileName
, fileContentType , fileContentType
, fileSource , fileSource
, fileSourceByteString
, fileMove , fileMove
-- *** Convenience functions -- *** Convenience functions
, languages , languages
@ -253,6 +254,7 @@ import Data.CaseInsensitive (CI, original)
import qualified Data.Conduit.List as CL import qualified Data.Conduit.List as CL
import Control.Monad.Trans.Resource (MonadResource, InternalState, runResourceT, withInternalState, getInternalState, liftResourceT, resourceForkIO) import Control.Monad.Trans.Resource (MonadResource, InternalState, runResourceT, withInternalState, getInternalState, liftResourceT, resourceForkIO)
import qualified System.PosixCompat.Files as PC import qualified System.PosixCompat.Files as PC
import Conduit ((.|), runConduit, sinkLazy)
import Data.Conduit (ConduitT, transPipe, Flush (Flush), yield, Void) import Data.Conduit (ConduitT, transPipe, Flush (Flush), yield, Void)
import qualified Yesod.Core.TypeCache as Cache import qualified Yesod.Core.TypeCache as Cache
import qualified Data.Word8 as W8 import qualified Data.Word8 as W8
@ -1381,6 +1383,17 @@ rawRequestBody = do
fileSource :: MonadResource m => FileInfo -> ConduitT () S.ByteString m () fileSource :: MonadResource m => FileInfo -> ConduitT () S.ByteString m ()
fileSource = transPipe liftResourceT . fileSourceRaw fileSource = transPipe liftResourceT . fileSourceRaw
-- | Extract a strict `ByteString` body from a `FileInfo`.
--
-- This function will block while reading the file.
--
-- > do
-- > fileByteString <- fileSourceByteString fileInfo
--
-- @since 1.6.5
fileSourceByteString :: MonadResource m => FileInfo -> m S.ByteString
fileSourceByteString fileInfo = runConduit (L.toStrict <$> (fileSource fileInfo .| sinkLazy))
-- | Provide a pure value for the response body. -- | Provide a pure value for the response body.
-- --
-- > respond ct = return . TypedContent ct . toContent -- > respond ct = return . TypedContent ct . toContent

View File

@ -1,5 +1,5 @@
name: yesod-core name: yesod-core
version: 1.6.4 version: 1.6.5
license: MIT license: MIT
license-file: LICENSE license-file: LICENSE
author: Michael Snoyman <michael@snoyman.com> author: Michael Snoyman <michael@snoyman.com>