From e92c1f0c3ebf9115ad76ed9d913e4f5cb96caf37 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Mon, 31 Oct 2016 12:45:33 +0200 Subject: [PATCH] yesod-static applies Yesod middlewares #1286 --- yesod-static/Yesod/Static.hs | 12 ++++++++++-- yesod-static/yesod-static.cabal | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/yesod-static/Yesod/Static.hs b/yesod-static/Yesod/Static.hs index 9ed71e27..45ad218b 100644 --- a/yesod-static/Yesod/Static.hs +++ b/yesod-static/Yesod/Static.hs @@ -6,6 +6,7 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE FlexibleContexts #-} --------------------------------------------------------- -- -- | Serve static files from a Yesod app. @@ -74,6 +75,7 @@ import Language.Haskell.TH.Syntax as TH import Crypto.Hash.Conduit (hashFile, sinkHash) import Crypto.Hash (MD5, Digest) +import Control.Monad.Catch (MonadThrow) import Control.Monad.Trans.State import qualified Data.Byteable as Byteable @@ -102,6 +104,7 @@ import qualified Data.Text.Lazy.Encoding as TLE import Data.Default --import Text.Lucius (luciusRTMinified) +import Network.Wai (pathInfo) import Network.Wai.Application.Static ( StaticSettings (..) , staticApp @@ -170,11 +173,16 @@ instance RenderRoute Static where instance ParseRoute Static where parseRoute (x, y) = Just $ StaticRoute x y -instance YesodSubDispatch Static m where +instance (MonadThrow m, MonadIO m, MonadBaseControl IO m) + => YesodSubDispatch Static (HandlerT master m) where yesodSubDispatch YesodSubRunnerEnv {..} req = - staticApp set req + ysreParentRunner base ysreParentEnv (fmap ysreToParentRoute route) req where + base = stripHandlerT handlert ysreGetSub ysreToParentRoute route + route = Just $ StaticRoute (pathInfo req) [] + Static set = ysreGetSub $ yreSite $ ysreParentEnv + handlert = sendWaiApplication $ staticApp set notHidden :: FilePath -> Bool notHidden "tmp" = False diff --git a/yesod-static/yesod-static.cabal b/yesod-static/yesod-static.cabal index 4c4d8a54..7ea35263 100644 --- a/yesod-static/yesod-static.cabal +++ b/yesod-static/yesod-static.cabal @@ -59,6 +59,7 @@ library , blaze-builder >= 0.3 , css-text >= 0.1.2 , hashable >= 1.1 + , exceptions exposed-modules: Yesod.Static Yesod.EmbeddedStatic