Return to 0.1 API

This commit is contained in:
Michael Snoyman 2011-07-15 11:45:40 +03:00
parent cd1016e2ba
commit 08f284c096
2 changed files with 22 additions and 22 deletions

View File

@ -30,21 +30,15 @@ module Yesod.Static
, StaticRoute (..) , StaticRoute (..)
-- * Smart constructor -- * Smart constructor
, static , static
-- FIXME add embed
-- * Template Haskell helpers -- * Template Haskell helpers
, staticFiles , staticFiles
{-
-- * Embed files
, getStaticHandler
-}
-- * Hashing -- * Hashing
, base64md5 , base64md5
#if TEST
, getFileListPieces
#endif
) where ) where
import System.Directory import System.Directory
import qualified System.Time --import qualified System.Time
import Control.Monad import Control.Monad
import Yesod.Handler import Yesod.Handler
@ -62,15 +56,14 @@ import qualified Data.Serialize
import Data.Text (Text, pack) import Data.Text (Text, pack)
import Data.Monoid (mempty) import Data.Monoid (mempty)
import qualified Data.Map as M import qualified Data.Map as M
import Data.IORef (readIORef, newIORef, writeIORef) --import Data.IORef (readIORef, newIORef, writeIORef)
import Network.Wai (pathInfo)
import Network.Wai.Application.Static import Network.Wai.Application.Static
( StaticSettings (..) ( StaticSettings (..)
, defaultWebAppSettings, defaultFileServerSettings , defaultWebAppSettings
, staticAppPieces
, pathFromRawPieces
, fileSystemLookup , fileSystemLookup
, pieceFromText , staticApp
) )
newtype Static = Static StaticSettings newtype Static = Static StaticSettings
@ -79,10 +72,10 @@ newtype Static = Static StaticSettings
-- --
-- Does not have index files, uses default directory listings and default mime -- Does not have index files, uses default directory listings and default mime
-- type list. -- type list.
static :: String -> FilePath -> IO Static static :: FilePath -> Static
static root fp = do static fp =
hashes <- mkHashMap fp --hashes <- mkHashMap fp
return $ Static $ defaultWebAppSettings { Static $ defaultWebAppSettings {
ssFolder = fileSystemLookup fp ssFolder = fileSystemLookup fp
} }
@ -115,8 +108,8 @@ instance RenderRoute StaticRoute where
renderRoute (StaticRoute x y) = (x, y) renderRoute (StaticRoute x y) = (x, y)
instance Yesod master => YesodDispatch Static master where instance Yesod master => YesodDispatch Static master where
yesodDispatch (Static set) _ textPieces _ _ = yesodDispatch (Static set) _ textPieces _ _ = Just $
Just $ staticAppPieces set (map pieceFromText textPieces) \req -> staticApp set req { pathInfo = textPieces }
notHidden :: FilePath -> Bool notHidden :: FilePath -> Bool
notHidden ('.':_) = False notHidden ('.':_) = False
@ -142,10 +135,12 @@ getFileListPieces = flip go id
-- > style_css = StaticRoute ["style.css"] [] -- > style_css = StaticRoute ["style.css"] []
-- > js_script_js = StaticRoute ["js/script.js"] [] -- > js_script_js = StaticRoute ["js/script.js"] []
staticFiles :: FilePath -> Q [Dec] staticFiles :: FilePath -> Q [Dec]
staticFiles dir = mkStaticFiles dir StaticSite staticFiles dir = mkStaticFiles dir
{-
publicFiles :: FilePath -> Q [Dec] publicFiles :: FilePath -> Q [Dec]
publicFiles dir = mkStaticFiles dir PublicSite publicFiles dir = mkStaticFiles dir PublicSite
-}
mkHashMap :: FilePath -> IO (M.Map FilePath S8.ByteString) mkHashMap :: FilePath -> IO (M.Map FilePath S8.ByteString)
mkHashMap dir = do mkHashMap dir = do
@ -184,8 +179,8 @@ mkPublicProductionEtag dir = do
-} -}
data StaticSite = StaticSite | PublicSite data StaticSite = StaticSite | PublicSite
mkStaticFiles :: FilePath -> StaticSite -> Q [Dec] mkStaticFiles :: FilePath -> Q [Dec]
mkStaticFiles fp StaticSite = mkStaticFiles' fp "StaticRoute" True mkStaticFiles fp = mkStaticFiles' fp "StaticRoute" True
mkStaticFiles' :: FilePath -- ^ static directory mkStaticFiles' :: FilePath -- ^ static directory
-> String -- ^ route constructor "StaticRoute" -> String -- ^ route constructor "StaticRoute"
@ -269,3 +264,7 @@ calcHash fname =
hashHandle h = do s <- L.hGetContents h hashHandle h = do s <- L.hGetContents h
return $! base64md5 s return $! base64md5 s
-} -}
-- FIXME Greg: Is this correct? Where is this function supposed to be?
pathFromRawPieces :: FilePath -> [String] -> FilePath
pathFromRawPieces = undefined

View File

@ -28,6 +28,7 @@ library
, directory >= 1.0 && < 1.2 , directory >= 1.0 && < 1.2
, transformers >= 0.2 && < 0.3 , transformers >= 0.2 && < 0.3
, wai-app-static >= 0.3 && < 0.4 , wai-app-static >= 0.3 && < 0.4
, wai >= 0.4 && < 0.5
, text >= 0.5 && < 1.0 , text >= 0.5 && < 1.0
exposed-modules: Yesod.Static exposed-modules: Yesod.Static
ghc-options: -Wall ghc-options: -Wall