on master help sign in
tempFileSinkOpts (#82)
70d7ba3Michael Snoyman
wai-extra/Network/Wai/Parse.hs+11−3
@@ -12,6 +12,7 @@ module Network.Wai.Parse
12 , conduitRequestBody
12 , conduitRequestBody
13 , lbsSink
13 , lbsSink
14 , tempFileSink
14 , tempFileSink
15+ , tempFileSinkOpts
15 , Param
16 , Param
16 , File
17 , File
17 , FileInfo (..)
18 , FileInfo (..)
@@ -76,10 +77,17 @@ lbsSink = fmap L.fromChunks CL.consume
76
77
77-- | Save uploaded files on disk as temporary files
78-- | Save uploaded files on disk as temporary files
78tempFileSink :: MonadResource m => Sink S.ByteString m FilePath
79tempFileSink :: 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
80 (key, (fp, h)) <- lift $ allocate (do
88 (key, (fp, h)) <- lift $ allocate (do
81− tempDir <- getTemporaryDirectory
89+ tempDir <- getTmpDir
82− openBinaryTempFile tempDir "webenc.buf") (\(_, h) -> hClose h)
90+ openBinaryTempFile tempDir pattern) (\(_, h) -> hClose h)
83 _ <- lift $ register $ removeFile fp
91 _ <- lift $ register $ removeFile fp
84 CB.sinkHandle h
92 CB.sinkHandle h
85 lift $ release key
93 lift $ release key