Return to 0.1 API
This commit is contained in:
parent
cd1016e2ba
commit
08f284c096
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user