module Network.Wai.Route
( Handler
, route
) where
import Data.ByteString (ByteString)
import Network.HTTP.Types
import Network.Wai
import Network.Wai.Route.Tree
import Prelude hiding (lookup)
import qualified Data.ByteString.Lazy as L
type Handler m = [(ByteString, ByteString)]
-> Request
-> m Response
route :: Monad m => [(ByteString, Handler m)] -> Request -> m Response
route rs rq = case lookup (fromList rs) path of
Just (f, c) -> f c rq
Nothing -> notFound
where
path = segments (rawPathInfo rq)
notFound = return $ responseLBS status404 [] L.empty