@@ -26,7 +26,6 @@ import Blaze.ByteString.Builder.HTTP (chunkedTransferEncoding, chunkedTransferTe
2626#if __GLASGOW_HASKELL__ < 709
2727import Control.Applicative
2828#endif
29−import Control.Exception
3029import Control.Monad (unless, when)
3130import Data.Array ((!))
3231import Data.ByteString (ByteString)
@@ -57,7 +56,7 @@ import Network.Wai
5756import Network.Wai.Handler.Warp.Buffer (toBuilderBuffer)
5857import qualified Network.Wai.Handler.Warp.Date as D
5958import qualified Network.Wai.Handler.Warp.FdCache as F
60−import qualified Network.Wai.Handler.Warp.FileInfoCache as I
59+import Network.Wai.Handler.Warp.File
6160import Network.Wai.Handler.Warp.Header
6261import Network.Wai.Handler.Warp.IO (toBufIOWith)
6362import Network.Wai.Handler.Warp.ResponseHeader
@@ -77,35 +76,6 @@ import qualified Paths_warp
7776
7877----------------------------------------------------------------
7978
80−fileRange :: H.Status -> H.ResponseHeaders -> FilePath
81− -> Maybe FilePart -> Maybe HeaderValue
82− -> (FilePath -> IO I.FileInfo)
83− -> IO (Either IOException
84− (H.Status, H.ResponseHeaders, Integer, Integer))
85−fileRange s0 hs0 path Nothing mRange get = do
86− efinfo <- try (get path)
87− case efinfo of
88− Left e -> return $ Left e
89− Right finfo -> do
90− let ret = fileRangeSized s0 hs0 Nothing mRange $ I.fileInfoSize finfo
91− return $ Right ret
92−fileRange s0 hs0 _ mPart@(Just part) mRange _ =
93− return . Right $ fileRangeSized s0 hs0 mPart mRange size
94− where
95− size = filePartFileSize part
96−
97−fileRangeSized :: H.Status -> H.ResponseHeaders
98− -> Maybe FilePart -> Maybe HeaderValue -> Integer
99− -> (H.Status, H.ResponseHeaders, Integer, Integer)
100−fileRangeSized s0 hs0 mPart mRange fileSize = (s, hs, beg, len)
101− where
102− part = fromMaybe (chooseFilePart fileSize mRange) mPart
103− beg = filePartOffset part
104− len = filePartByteCount part
105− (s, hs) = adjustForFilePart s0 hs0 $ FilePart beg len fileSize
106−
107−----------------------------------------------------------------
108−
10979-- | Sending a HTTP response to 'Connection' according to 'Response'.
11080--
11181-- Applications/middlewares MUST specify a proper 'H.ResponseHeaders'.