yesod/yesod-core/Yesod/Core/Class/Dispatch.hs
2013-03-13 07:12:19 +02:00

25 lines
856 B
Haskell

{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE FlexibleInstances #-}
module Yesod.Core.Class.Dispatch where
import Yesod.Routes.Class
import qualified Network.Wai as W
import Yesod.Core.Types
import Yesod.Core.Class.Yesod
import Yesod.Core.Internal.Request (textQueryString)
-- | This class is automatically instantiated when you use the template haskell
-- mkYesod function. You should never need to deal with it directly.
class YesodDispatch sub master where
yesodDispatch
:: Yesod master
=> (Maybe (Route sub) -> YesodRunnerEnv sub master)
-> W.Application
instance YesodDispatch WaiSubsite master where
yesodDispatch getEnv req =
app req
where
YesodRunnerEnv { yreSub = WaiSubsite app } = getEnv $ Just $ WaiSubsiteRoute (W.pathInfo req) (textQueryString req)