module Routing ( routeRequest ) where import Control.Applicative ((<|>)) import Network.URI import Network.FastCGI import App.Startpage import App.Info import App.Login import App.Logout import App.Error import App.Private import Request import AppMonad routeRequest :: URI -> App CGIResult routeRequest uri = do let path = uriPath uri mayHandler = handlePath path "^/info" Info <|> handlePath path "^/login" Login <|> handlePath path "^/logout" Logout <|> handlePath path "^/register" Register <|> handlePath path "^/private" Private <|> handlePath path "^/$" Startpage case mayHandler of Just handler -> handleRequest handler Nothing -> handleRequest PageNotFound