Built in function for statics from dir

This commit is contained in:
Michael Snoyman 2009-10-04 20:25:06 +02:00
parent 7df28f4f30
commit 5231da57a3
3 changed files with 15 additions and 1 deletions

1
TODO
View File

@ -1,3 +1,4 @@
Catch exceptions and return as 500 errors
approot
Request parameters without a request object?
More checking on parameters (minimum length etc)

View File

@ -16,14 +16,26 @@
module Web.Restful.Helpers.Static
( serveStatic
, FileLookup
, fileLookupDir
) where
import qualified Data.ByteString as B
import System.Directory (doesFileExist)
import Control.Applicative ((<$>))
import Web.Restful
type FileLookup = FilePath -> IO (Maybe B.ByteString)
-- | A 'FileLookup' for files in a directory.
fileLookupDir :: FilePath -> FileLookup
fileLookupDir dir fp = do
let fp' = dir ++ '/' : fp -- FIXME incredibly insecure...
exists <- doesFileExist fp'
if exists
then Just <$> B.readFile fp'
else return Nothing
serveStatic :: FileLookup -> Verb -> Handler
serveStatic fl Get = getStatic fl
serveStatic _ _ = notFound

View File

@ -36,7 +36,8 @@ library
test-framework-hunit,
HUnit,
QuickCheck == 1.*,
enumerable >= 0.0.3
enumerable >= 0.0.3,
directory >= 1
exposed-modules: Web.Restful,
Web.Restful.Constants,
Web.Restful.Request,