on master help sign in
tempFileSinkOpts (#82)
commit70d7ba37025f88163cbf49ea1bc70c5b9d473761 authorMichael Snoyman <michael@snoyman.com> dateMon 2 Jul 2012, 11:27 (14 years ago) parent533c41d
1 file changed+11−3
wai-extra/Network/Wai/Parse.hs+11−3
wai-extra/Network/Wai/Parse.hs+11−3
@@ -12,6 +12,7 @@ module Network.Wai.Parse
1212 , conduitRequestBody
1313 , lbsSink
1414 , tempFileSink
15+ , tempFileSinkOpts
1516 , Param
1617 , File
1718 , FileInfo (..)
@@ -76,10 +77,17 @@ lbsSink = fmap L.fromChunks CL.consume
7677
7778-- | Save uploaded files on disk as temporary files
7879tempFileSink :: MonadResource m => Sink S.ByteString m FilePath
79−tempFileSink = do
80+tempFileSink = tempFileSinkOpts getTemporaryDirectory "webenc.buf"
81+
82+-- | Same as 'tempFileSink', but use configurable temp folders and patterns.
83+tempFileSinkOpts :: MonadResource m
84+ => IO FilePath -- ^ get temporary directory
85+ -> String -- ^ filename pattern
86+ -> Sink S.ByteString m FilePath
87+tempFileSinkOpts getTmpDir pattern = do
8088 (key, (fp, h)) <- lift $ allocate (do
81− tempDir <- getTemporaryDirectory
82− openBinaryTempFile tempDir "webenc.buf") (\(_, h) -> hClose h)
89+ tempDir <- getTmpDir
90+ openBinaryTempFile tempDir pattern) (\(_, h) -> hClose h)
8391 _ <- lift $ register $ removeFile fp
8492 CB.sinkHandle h
8593 lift $ release key