packages feed

web-routes-happstack (empty) → 0.19

raw patch · 3 files changed

+67/−0 lines, 3 filesdep +basedep +happstack-serverdep +web-routessetup-changed

Dependencies added: base, happstack-server, web-routes

Files

+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ Web/Routes/Happstack.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances, UndecidableInstances, PackageImports #-}+module Web.Routes.Happstack where++import Control.Applicative ((<$>))+import Control.Monad (MonadPlus(mzero))+import Data.List (intercalate)+import Happstack.Server (FilterMonad(..), ServerMonad(..), WebMonad(..), ServerPartT, Response, Request(rqPaths), ToMessage(..), dirs, runServerPartT, withRequest)+import Web.Routes.RouteT (RouteT(RouteT), liftRouteT, mapRouteT)+import Web.Routes.Site (Site, runSite)++instance (ServerMonad m) => ServerMonad (RouteT url m) where+    askRq       = liftRouteT askRq+    localRq f m = mapRouteT (localRq f) m++instance (FilterMonad a m)=> FilterMonad a (RouteT url m) where+    setFilter     = liftRouteT . setFilter+    composeFilter = liftRouteT . composeFilter+    getFilter     = mapRouteT getFilter ++instance (WebMonad a m) => WebMonad a (RouteT url m) where+    finishWith = liftRouteT . finishWith++implSite :: (Functor m, Monad m, MonadPlus m, ServerMonad m) => String -> FilePath -> Site url (m a) -> m a+implSite domain approot siteSpec =+  do r <- implSite_ domain approot siteSpec+     case r of+       (Left _) -> mzero+       (Right a) -> return a++implSite_ :: (Functor m, Monad m, MonadPlus m, ServerMonad m) => String -> FilePath -> Site url (m a) -> m (Either String a)+implSite_ domain approot siteSpec =+    dirs approot $ do rq <- askRq+                      let pathInfo = intercalate "/" (rqPaths rq)+                          f        = runSite (domain ++ approot) siteSpec pathInfo+                      case f of+                        (Left parseError) -> return (Left parseError)+                        (Right sp)   -> Right <$> (localRq (const $ rq { rqPaths = [] }) sp)+{- +implSite__ :: (Monad m) => String -> FilePath -> ([ErrorMsg] -> ServerPartT m a) -> Site url (ServerPartT m a) -> (ServerPartT m a)+implSite__ domain approot handleError siteSpec =+    dirs approot $ do rq <- askRq+                      let pathInfo = intercalate "/" (rqPaths rq)+                          f        = runSite (domain ++ approot) siteSpec pathInfo+                      case f of+                        (Failure errs) -> handleError errs+                        (Success sp)   -> localRq (const $ rq { rqPaths = [] }) sp+-}
+ web-routes-happstack.cabal view
@@ -0,0 +1,18 @@+Name:             web-routes-happstack+Version:          0.19+License:          BSD3+Author:           jeremy@seereason.com+Maintainer:       partners@seereason.com+Bug-Reports:      http://bugzilla.seereason.com/+Category:         Web, Language+Synopsis:         Adds support for using web-routes with Happstack+Cabal-Version:    >= 1.6+Build-type:       Simple++Library+        Build-Depends:    base >= 4 && < 5, happstack-server, web-routes >= 0.19+        Exposed-Modules:  Web.Routes.Happstack++source-repository head+    type:     darcs+    location: http://src.seereason.com/web-routes/